1.4having子句的使用以及和where的区别

首先说一下having子句的作用:having子句主要用于过滤分组

分组函数也叫组函数也叫多行函数

(1)having子句的使用

        求平均工资大于2000点部门

                select    deptno , avg(sal)    from    emp    group    by    deptno    having    avg(sal)>2000;

 (2)where与having点区别

        不能在where子句中使用组函数,但是可以在having子句中使用组函数

        不含分组函数时where和having是可以通用的

(3)错误示例

        select    deptno,avg(sal)    from    emp    where    avg(sal) > 2000    group    by    deptno;

(4)where和having可以通用的情况

        查询10号部门的平均工资

        select    deptno,avg(sal)    from    emp    group    by    deptno    having    deptno    =    10;

        select    deptno,avg(sal)    from    emp    where    deptno=10    group    by    deptno;

(5)注意:从SQL优化的角度尽量使用where

        原因:having先分组后过滤,where先过滤后分组

        where使得分组记录数大大降低,从而提高效率

你可能感兴趣的:(1.4having子句的使用以及和where的区别)