Sql Oracle查询以找出女性员工较多的部门

Sql Oracle查询以找出女性员工较多的部门,sql,oracle,Sql,Oracle,给定员工数据库(id、部门、性别),我需要找到女性员工数量超过男性员工的部门 我已经能够使用oracle分区获得每个部门每个性别的员工数量,如下所示 select distinct(dept), sex, count(*) over( partition by dept, sex) cnt from employee order by dept desc, sex desc; 上面查询的结果集如下所示-- 我试图加入上面的结果集,但没有取得多大进展 我需要提取“人力资源”和“开发”部门作为输出

给定员工数据库(id、部门、性别),我需要找到女性员工数量超过男性员工的部门

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

select distinct(dept), sex, count(*) over( partition by dept, sex) cnt from employee order by dept desc, sex desc;
上面查询的结果集如下所示--

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

我需要提取“人力资源”和“开发”部门作为输出,因为这些部门有更多的女性员工


提前感谢

使用聚合和条件表达式:

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

使用聚合和条件表达式:

select dept
from employee e
group by dept
having sum(case when sex = 'F' then 1 when sex = 'M' then -1 end) > 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;

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

proc sql;

select distinct(dept),count(gender) as no_female_emp
from emp
where gender='F'
group by 1 order by 2 desc;
quit;
Distinct不是一个函数(在列上),它作用于整个选定行。它实际上是SELECT DISTINCT,与SELECT[全部]相反。(并且“选择不同的(c1),c2)”与“选择不同的c1,c2”相同,后者与“选择不同的c1,(c2)”…)不同的不是一个函数(在列上),它在整个选定行上工作。它实际上是SELECT DISTINCT,与SELECT[全部]相反。(并且“选择不同的(c1),c2)”与“选择不同的c1,c2”相同,后者与“选择不同的c1,(c2)”…)