首页 > 解决方案 > 男女平均工资,但分开

问题描述

我必须:“编写一个 SQL 代码,显示每个有超过一名男性员工和一名女性员工的州的男性员工人数和女性员工人数,男性平均工资和女性平均工资。

我知道它也应该按性别分组,但是它什么都不显示?我应该怎么办?问题是现在我得到的平均工资是两性加起来的。我认为我的其余代码都很好。

SELECT gender, state, AVG(salary),
COUNT(CASE WHEN gender='M' THEN 1  END) AS men,
COUNT(CASE WHEN gender='F' THEN 1  END) AS women
FROM employee
GROUP BY state
HAVING men>1 && women>1
ORDER BY state, gender DESC;

标签: mysql

解决方案


SELECT state, 
       sum(gender='M') as men_count,
       sum(gender='F') as women_count,
       AVG(case when gender='M' then salary end) as men_avg_sal,
       AVG(case when gender='F' then salary end) as women_avg_sal
FROM employee
GROUP BY state
HAVING sum(gender='M') > 1
   AND sum(gender='F') > 1
ORDER BY state

推荐阅读