允许对 GROUP BY 生成的聚合结果进行过滤。它与 WHERE 子句类似,但区别在于,WHERE 在聚合前执行,而 HAVING 在聚合后执行。
在 HAVING 子句中,可以通过别名引用 SELECT 子句中的聚合结果。或者,HAVING 子句也可以根据未在查询结果中返回的其他聚合结果进行过滤。
示例
如果你有一个如下所示的 sales 表:
CREATE TABLE sales
(
region String,
salesperson String,
amount Float64
)
ORDER BY (region, salesperson);你可以这样查询它:
SELECT
region,
salesperson,
sum(amount) AS total_sales
FROM sales
GROUP BY
region,
salesperson
HAVING total_sales > 10000
ORDER BY total_sales DESC;这会列出所在地区总销售额超过 10,000 的销售人员。
限制
如果未进行聚合,就不能使用 HAVING。请改用 WHERE。