题解 | 各个部门实际平均薪资和男女员工实际平均薪资

各个部门实际平均薪资和男女员工实际平均薪资

https://www.nowcoder.com/practice/e8272685d07347cc88667f31f7989231

select s.department, round(avg(normal_salary-dock_salary),2)average_actual_salary,
if(avg_male is null,0.00,avg_male) average_actual_salary_male,
if(avg_female is null,0.00,avg_female) average_actual_salary_female
from staff_tb s join salary_tb sa using(staff_id)
left join
(select department,round(avg(normal_salary-dock_salary),2) avg_male
from staff_tb s join salary_tb sa using(staff_id)
group by department,staff_gender
having staff_gender='male') m using(department)
left join
(select department,round(avg(normal_salary-dock_salary),2) avg_female
from staff_tb s join salary_tb sa using(staff_id)
group by department,staff_gender
having staff_gender='female') fe
using(department)
group by s.department,avg_male,avg_female
order by average_actual_salary desc;

select sf.department,
round(avg(sy.normal_salary - sy.dock_salary), 2) as average_actual_salary,
ifnull(round(avg(if(sf.staff_gender = 'male', sy.normal_salary - sy.dock_salary, null)), 2), 0.00) as average_actual_salary_male,
ifnull(round(avg(if(sf.staff_gender = 'female', sy.normal_salary - sy.dock_salary, null)), 2), 0.00) as average_actual_salary_female
from staff_tb sf
join salary_tb sy on sf.staff_id = sy.staff_id
group by department
order by average_actual_salary desc;
我还是写复杂了,下面一种着实优雅啊

全部评论

相关推荐

在笔试的大西瓜很矫健:校招数分不用想了,这经历和学历都不够用,大厂更别想,初筛都过不了,说点不好听的小厂数分都进不去(小厂也是假数分),要两个对口实习+3个项目(或者3+2),而且要有含金量才能补一点你的学历劣势。 建议刷实习,社招找数分,校招看运气,能入行业就行,可以运营转数分
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务