首页 新闻 赞助 找找看

oracle:查询哪个部门的员工人数 高于各部门平均人数

0
悬赏园豆:20 [已关闭问题] 关闭于 2017-09-19 19:11

-- 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,有没有别的方法可以解决

还有没有别的方法,可以跟我说一下做这一题的思路

oneStep12的主页 oneStep12 | 初学一级 | 园豆:142
提问于:2017-08-21 09:58
< >
分享
所有回答(2)
0
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

试试这个

悟行 | 园豆:12559 (专家六级) | 2017-08-21 10:32

不行,报错:SQL语句命令为正确结束

支持(0) 反对(0) oneStep12 | 园豆:142 (初学一级) | 2017-08-21 10:42

@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));
支持(0) 反对(0) 悟行 | 园豆:12559 (专家六级) | 2017-08-21 10:48

@抽象ID: oracle:分组函数的嵌套太深了

支持(0) 反对(0) oneStep12 | 园豆:142 (初学一级) | 2017-08-21 10:49

@抽象ID: 可以给我解释一下: count(empno)数的是分组后的人数,但是分组后的人数,指的是一组的人数还是指的是每一组的人数加在一起。

支持(0) 反对(0) oneStep12 | 园豆:142 (初学一级) | 2017-08-21 10:50

@oneStep12: 最后一招用:with t as;

 

分组后的人数

支持(0) 反对(0) 悟行 | 园豆:12559 (专家六级) | 2017-08-21 10:55

@抽象ID: 那指的是一组的人数,还是每一组的人数 with t as加在哪里?

支持(0) 反对(0) oneStep12 | 园豆:142 (初学一级) | 2017-08-21 10:57

@抽象ID: AVG(COUNT(empno))  里面count()指的是一组的人数,还是每一组的人数 

支持(0) 反对(0) oneStep12 | 园豆:142 (初学一级) | 2017-08-21 11:06
0

表结构 发一下呗  scott下的emp表?

窦光大大存大大凯 | 园豆:220 (菜鸟二级) | 2017-09-07 20:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册