灌水唠嗑区
技术分享
文章

必须用 HAVING、不能用 WHERE 的经典例子

发表于2026-05-01 09:16:3971次浏览5个评论

需求:查询每个部门的平均工资,只筛选出平均工资大于 10000 的部门

sql

SELECT dept_id, AVG(salary) AS avg_sal
FROM employee
GROUP BY dept_id
HAVING AVG(salary) > 10000;

为什么必须用 HAVING?

  1. AVG(salary)聚合函数

  2. 分组之后,对统计结果做过滤

  3. WHERE 里不能写聚合函数,下面这种直接报错:

sql

-- 错误写法!WHERE 不允许用 AVG
SELECT dept_id, AVG(salary) AS avg_sal
FROM employee
WHERE AVG(salary) > 10000
GROUP BY dept_id;

一句话记住

过滤分组后的聚合结果,只能用 HAVING,WHERE 办不到。

评论

登录后才可以发表评论
用户头像
柒柒天晴发表于 3个月前
学习下
用户头像
GBase用户28017发表于 3个月前
好。
曾云林发表于 2个月前
学会了
曾浩轩发表于 2个月前
向大佬学习
shepherd发表于 2个月前
闪闪发光