在 SQL 中,HAVING 子句通常与 GROUP BY 子句一起使用,用于过滤满足特定条件的分组
SELECT column_name1, aggregate_function(column_name2)
FROM table_name
GROUP BY column_name1
HAVING aggregate_function(column_name2) IN (
SELECT aggregate_function(column_name2)
FROM table_name
WHERE condition
);
这里是一个具体的例子:
假设我们有一个名为 “orders” 的表格,其中包含以下列:customer_id(顾客ID)、order_date(订单日期)和amount(金额)。
我们希望找到平均消费超过 100 的顾客。首先,我们需要计算每个顾客的平均消费:
SELECT customer_id, AVG(amount) as average_amount
FROM orders
GROUP BY customer_id;
然后,我们可以使用 HAVING 子句和子查询来找到平均消费超过 100 的顾客:
SELECT customer_id, AVG(amount) as average_amount
FROM orders
GROUP BY customer_id
HAVING AVG(amount) > (
SELECT AVG(amount)
FROM orders
WHERE amount > 100
);
这将返回所有平均消费超过 100 的顾客及其平均消费。