MENU

having[对分组后的信息进行过滤]

June 11, 2018 • Read: 309 • SQL

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的前面,顺序不能颠倒*

注意
  1. having子句是用来对分组之后的数据进行过滤,因此使用having前通常先使用group by
  2. 如果没有使用group by,但是用了having,则意味着把所有的记录当作一组来过滤
  3. having子句出现的字段必须是分组之后,组的整体信息,having子句不允许出现组内详细信息
  4. where和having条件中都不允许出现字段的别名
最后编辑于: October 19, 2018
Archives Tip
QR Code for this page
Tipping QR Code
Leave a Comment