Oracle查询以找出拥有更多女性员工的部门

时间:2015-09-01 13:03:17

标签: sql oracle

鉴于员工数据库(身份证,部门,性别),我需要找到女性员工人数超过男性员工的部门吗?

我已经能够使用oracle分区获得每个性别的员工数量,如下所示

select distinct(dept), sex, count(*) over( partition by dept, sex) cnt from employee order by dept desc, sex desc;

上面查询的结果集看起来像这样 -

*******************  
dept    sex    cnt  
*******************   
hr       M     1  
hr       F     2  
dev      F     1  
qa       M     2  
qa       F     1   

我试图加入上面的结果集,但是没有取得多大进展

我需要提取“hr”和“dev”部门作为输出,因为这些部门有更多女性员工

提前致谢

2 个答案:

答案 0 :(得分:4)

使用聚合和条件表达式:

select dept
from employee e
group by dept
having sum(case when sex = 'F' then 1 when sex = 'M' then -1 end) > 0;

答案 1 :(得分:0)

查询按降序查找有女性员工的部门。

proc sql;

select distinct(dept),count(gender) as no_female_emp
from emp
where gender='F'
group by 1 order by 2 desc;
quit;