鉴于员工数据库(身份证,部门,性别),我需要找到女性员工人数超过男性员工的部门吗?
我已经能够使用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”部门作为输出,因为这些部门有更多女性员工!
提前致谢
答案 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;