mysql查询部门人数大于所有部门平均人数的部门
发布网友
发布时间:2022-04-10 17:54
我来回答
共3个回答
热心网友
时间:2022-04-10 19:24
错误在于avg(count(empno))这里其实是按部门计数、按部门求平均两步查询,不能在一次子查询里实现。
其实可以跳出avg(count(,直接用count总人数除count部门数来求平均:select count(distinct empno)/count(distinct deptno)
热心网友
时间:2022-04-10 20:42
select t1.*, t2.s
from emp_hiloo t1 join (select deptno, avg(salary) s from emp_hiloo group by deptno) t2
on t1.deptno=t2.deptno
where t1.salary>t2.s追问我要查询的是部门人数大于所有部门平均人数的部门编号,部门名称(如 a部门6人,b部门4人,c部门5人,那么部门平均人数是5人,大于平均人数的部门就是a部门,所以最后查询结果应该是显示a部门的部门编号、部门名称、部门人数
刚刚忘记说谢谢!
热心网友
时间:2022-04-10 22:16
其一第一排count(empno)改为count(e.empno)
其二外层查询需要分组,不然你用count(*)就是错的
SELECT D.DEPTNO,D.DNAME,COUNT(E.ENAME)
FROM EMP E JOIN DEPT D ON E.DEPTNO=D.DEPTNO
GROUP BY D.DEPTNO,D.DNAME
HAVING COUNT(E.ENAME)>(
SELECT AVG(COUNT(ENAME)) FROM EMP GROUP BY DEPTNO
)