简体中文
Appearance
简体中文
Appearance
HAVING 子句在 SQL 中用于在 GROUP BY 子句聚合后对结果集进行条件过滤。它与 WHERE 子句不同,WHERE 子句在数据分组前对个别记录进行过滤,而 HAVING 子句则是在数据已经被 GROUP BY 子句聚合之后,对这些分组的结果进行过滤。
HAVING 子句通常与聚合函数(如 SUM、AVG、MAX、MIN、COUNT 等)一起使用,用于指定筛选条件。
SELECT column1, column2, AGGREGATE_FUNCTION(column3)
FROM table_name
WHERE condition1
GROUP BY column1, column2
HAVING condition2;这里的 AGGREGATE_FUNCTION 可以是任何聚合函数,condition1 是 WHERE 子句中使用的筛选条件,而 condition2 是应用于聚合结果的筛选条件。
SELECT customer_id, SUM(order_amount) AS total_amount
FROM orders
GROUP BY customer_id
HAVING SUM(order_amount) > 500;这个查询会返回订单总额超过 500 的所有客户及其订单总额。
TIP
GROUP BY 子句存在的话, HAVING 子句必须跟在 GROUP BY 子句之后。GROUP BY 子句而使用 HAVING 子句,但这种情况下 HAVING 会作用于整个结果集,就像是对所有行的一个总体聚合条件。WHERE 和 HAVING 子句,WHERE 子句会先过滤个别记录,然后 GROUP BY 会进行数据聚合,最后 HAVING 子句会对聚合后的数据进行过滤。