温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

having子句怎么用

发布时间:2026-09-16 11:58:15 来源:亿速云 阅读:87 作者:小樊 栏目:数据库

HAVING 子句在 SQL 中通常和 GROUP BY 配合使用,用来对分组后的结果进行筛选
可以把它理解成:WHERE 筛选行,HAVING 筛选组


一、基本语法

SELECT 列, 聚合函数()
FROMWHERE 条件
GROUP BYHAVING 分组后的筛选条件;

执行顺序:

  1. FROM
  2. WHERE(先过滤原始数据)
  3. GROUP BY(分组)
  4. 聚合函数计算
  5. HAVING(过滤分组结果)

二、WHERE 和 HAVING 的区别

对比项 WHERE HAVING
作用对象 分组
是否可用聚合函数 ❌ 不可以 ✅ 可以
执行时机 分组前 分组后

三、常见示例

示例 1:筛选分组后的结果

统计每个部门的员工数,只显示人数大于 3 的部门:

SELECT dept_id, COUNT(*) AS emp_count
FROM employee
GROUP BY dept_id
HAVING COUNT(*) > 3;

示例 2:HAVING 中使用聚合函数

查询平均工资大于 5000 的部门:

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

示例 3:WHERE + HAVING 一起用

先排除离职员工,再统计部门人数:

SELECT dept_id, COUNT(*) AS emp_count
FROM employee
WHERE status = 'active'
GROUP BY dept_id
HAVING COUNT(*) >= 5;

示例 4:多条件 HAVING

SELECT dept_id, AVG(salary) AS avg_sal
FROM employee
GROUP BY dept_id
HAVING AVG(salary) > 5000 AND COUNT(*) > 10;

四、常见错误

❌ 在 WHERE 中使用聚合函数:

WHERE COUNT(*) > 3  -- 错误

✅ 正确写法:

HAVING COUNT(*) > 3

如果你愿意,我也可以结合你正在用的数据库(MySQL / Oracle / SQL Server)具体业务场景给你写示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI