select deptno,avg(sal) t
from emp
GROUP BY DEPTNO
查询结果正常:
但是对上述查询字段进行having条件之后不能结果为null
select deptno,avg(sal) t
from emp
GROUP BY DEPTNO
having max(t)
结果:
原因:聚合函数嵌套
解释:去掉别名
select deptno,avg(sal)
from emp
GROUP BY DEPTNO
having max(avg(sal))
结果报错:
Invalid use of group function(组函数的使用无效)
而如下查询为子查询,不属于聚合函数嵌套
select dept.dname,t.deptno,t.sal
from dept JOIN
(select deptno,avg(sal)sal from emp group by deptno) t
on dept.deptno = t.deptno
having max(sal)
max括号内的sal为子表的列,非聚合函数
此外,where,聚合函数,having的执行顺序为where>聚合函数>having