- select deptno avg(sal) as "平均工资"
- from emp
- group by deptno
- having avg(sal) > 2000
having 和 where 的区别展开目录
- /*把姓名不包含A的所有员工按部门编号分组,
- 统计输出部门平均工资大于2000的部门的部门编号,平均工资*/
- select deptno,avg(sal)
- from emp
- where ename not like '%A%'
- group by deptno
- having avg(sal) > 2000
where 对原始记录过滤,having 对分组后的记录过滤,where 必须写在 having 的前面,顺序不能颠倒 *
注意展开目录
- having 子句是用来对分组之后的数据进行过滤,因此使用 having 前通常先使用 group by
- 如果没有使用 group by,但是用了 having,则意味着把所有的记录当作一组来过滤
- having 子句出现的字段必须是分组之后,组的整体信息,having 子句不允许出现组内详细信息
- where 和 having 条件中都不允许出现字段的别名