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| department | amount |
|---|---|
| Sales | 1200 |
| IT | 900 |
| Sales | 1500 |
| HR | 700 |
运行结果
| department | SUM(amount) |
|---|---|
| Sales | 2700 |
常见问题
HAVING 可以不配合 GROUP BY 吗?
部分数据库允许,但实际使用中 HAVING 通常与 GROUP BY 和聚合函数一起出现。
HAVING 能替代 WHERE 吗?
不建议。能在分组前筛选的条件优先写在 WHERE 中。
HAVING 中可以使用聚合函数吗?
可以,这正是 HAVING 的常见用途,例如 HAVING COUNT(*) > 1。
标签
这篇内容是否清楚?
感谢反馈,我们会把它用于后续内容复核。