HAVING 是 SQL 中一个可选的关键字,用于与 GROUP BY 一起使用来筛选分组后的结果集。HAVING 子句可以让我们在分组后对分组结果进行过滤。
HAVING 子句语法如下:
SELECT column1, column2, ...
FROM table_name
WHERE condition
GROUP BY column1, column2, ...
HAVING condition
ORDER BY column1, column2, ...;
其中,HAVING 关键字紧跟在 GROUP BY 子句之后,它接收一个条件表达式作为参数。只有符合条件的记录才会出现在查询结果中。
需要注意以下几点:
- HAVING 子句只能与 GROUP BY 一起使用。
- HAVING 子句中可以使用聚合函数,如 COUNT()、SUM()、AVG() 等。
- 如果没有指定 GROUP BY 子句,则 HAVING 将作用于整个查询结果集。
- WHERE 和 HAVING 的区别:WHERE 过滤行,而 HAVING 过滤分组。
下面是一个例子:
假设我们有一个订单表 orders ,其中包含字段 order_id、customer_id 和 total_amount 。现在我们想查找每个客户的总销售额,并仅返回总销售额大于 1000 的客户记录。可以使用如下 SQL 查询语句:
SELECT customer_id, SUM(total_amount) as total_sales
FROM orders
GROUP BY customer_id
HAVING SUM(total_amount) > 1000;
上述语句将根据客户 ID 分组,并计算每个客户的总销售额。然后,HAVING 子句将从分组结果中过滤出总销售额大于 1000 的客户记录。