灌水唠嗑区
技术分享
文章
必须用 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?
AVG(salary)是聚合函数是分组之后,对统计结果做过滤
WHERE 里不能写聚合函数,下面这种直接报错:
sql
-- 错误写法!WHERE 不允许用 AVG
SELECT dept_id, AVG(salary) AS avg_sal
FROM employee
WHERE AVG(salary) > 10000
GROUP BY dept_id;
一句话记住
过滤分组后的聚合结果,只能用 HAVING,WHERE 办不到。
热门帖子
- 12025-12-01浏览数:182764
- 22023-05-09浏览数:25062
- 42023-09-25浏览数:18526
- 52020-05-11浏览数:17529