HAVING子句的主要功能是对分组后的数据进行过滤,如果子查询在HAVING中表示要进行分组过滤,一般返回单行单列的数据
示例一、查询部门编号,人数,平均工资,并且要求这些部门的平均工资高于公司的平均工资
--查询部门编号,人数,平均工资,并且要求这些部门的平均工资高于公司的平均工资
SELECT e.deptno,COUNT(e.empno),ROUND(AVG(e.sal),2)
FROM emp e
GROUP BY e.deptno
HAVING AVG(e.sal)>(
SELECT AVG(sal)
FROM emp
);
示例二、查询出部门平均工资高的部门名称和平均工资
--查询出部门平均工资高的部门名称和平均工资
SELECT d.deptno,d.dname,AVG(e.sal) avgsal
FROM emp e,dept d
WHERE e.deptno=d.deptno
GROUP BY d.deptno,d.dname
HAVING AVG(e.sal)=(
SELECT MAX(AVG(sal))
FROM emp
GROUP BY deptno
);