-- 2.查询哪个部门的员工人数 高于各部门平均人数
select e.deptno,count(empno) from emp e group by e.deptno
having count(empno)> (select avg(count(empno))from emp GROUP BY deptno);
avg(count(empno)) count(empno)数的是分组后的人数,但是分组后的人数,指的是一组的人数还是指的是每一组的人数加在一起。
select e.deptno,count(empno) from emp e group by e.deptno
having count(e.empno)>(select avg(count(empno))from emp where e.deptno=deptno);
为什么换成where 这边也是相当于一个分组, 报错说嵌套分组函数没有group by,有没有别的方法可以解决
还有没有别的方法,可以跟我说一下做这一题的思路
select e.deptno,count(empno) from emp e group by e.deptno LEFT JOIN (select avg(count(emp.empno)) empnocount,emp.deptno FROM emp GROUP BY emp.deptno) p ON e.deptno=p.deptno HAVING count(e.empno)>p.empnocount
试试这个
不行,报错:SQL语句命令为正确结束
@oneStep12: 最后一试
SELECT e.deptno , COUNT(e.empno) FROM emp e INNER JOIN emp p ON e.deptno = p.deptno GROUP BY e.deptno HAVING COUNT(e.empno) > AVG(COUNT(p.empno));
@抽象ID: oracle:分组函数的嵌套太深了
@抽象ID: 可以给我解释一下: count(empno)数的是分组后的人数,但是分组后的人数,指的是一组的人数还是指的是每一组的人数加在一起。
@oneStep12: 最后一招用:with t as;
分组后的人数
@抽象ID: 那指的是一组的人数,还是每一组的人数 with t as加在哪里?
@抽象ID: AVG(COUNT(empno)) 里面count()指的是一组的人数,还是每一组的人数
表结构 发一下呗 scott下的emp表?