SQLPathLab
聚合统计 · 进阶

HAVING

筛选分组后的汇总结果,通常配合 GROUP BY 使用。

简介

HAVING 在 GROUP BY 和聚合之后筛选分组结果,因此可以直接判断 SUM、COUNT 等聚合值。原始行条件应尽量写在 WHERE 中,先缩小参与分组的数据范围。没有聚合语义时不要用 HAVING 替代 WHERE。

基础语法

SELECT department, SUM(amount) FROM orders GROUP BY department HAVING SUM(amount) > 1000;

示例

HAVING 示例

先按 department 汇总金额,再保留 SUM(amount) 大于 1000 的部门。

示例数据表

表名:orders
orders
departmentamount
Sales 1200
IT 900
Sales 1500
HR 700

运行结果

result
departmentSUM(amount)
Sales 2700

常见问题

HAVING 可以不配合 GROUP BY 吗?

部分数据库允许,但实际使用中 HAVING 通常与 GROUP BY 和聚合函数一起出现。

HAVING 能替代 WHERE 吗?

不建议。能在分组前筛选的条件优先写在 WHERE 中。

HAVING 中可以使用聚合函数吗?

可以,这正是 HAVING 的常见用途,例如 HAVING COUNT(*) > 1。

标签

聚合统计常用

这篇内容是否清楚?