mysql - 男女平均工资,但分开
问题描述
我必须:“编写一个 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;
解决方案
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
推荐阅读
- ssl - Nginx PEM_read_bio_X509 PEM_read_bio:错误的结束行
- mysql - 当我在一张表中有数百万条记录时如何提高性能?
- python - 在 pd.read_excel 之后如何用通用索引更改索引
- java - 无法解析 @OneToMany 子表 (@JoinColumn) 的属性
- java - Java - FileOutputStream 覆盖文件,但它似乎没有改变
- maven - 从 pom 中的所有依赖项中排除特定文件
- translation - Symfony 5:将阿拉伯数字翻译成现代数字
- android - Android Button 背景无法识别/使用可绘制对象
- javascript - 如何在 React 功能组件中立即更新状态?
- mysql - Rails 升级到 5.2.3 导致“Mysql2::Error: Too many connections”