【问题标题】:Average salary for men and women, but separated男女平均工资,但分开
【发布时间】:2020-04-01 06:34:56
【问题描述】:

我必须:“编写一个 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


    【解决方案1】:
    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
    

    【讨论】:

    • 我认为需要ELSE NULL 才能使平均值正确。
    • 平均值计算有问题。见例子sqlfiddle.com/#!9/18ae48/1
    • @danblack 我修好了,谢谢,很好的观察! :)
    • @CaffeinatedCod3r 你是对的,谢谢你的例子
    猜你喜欢
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多