概述
思路:
找出每个发薪日得公司平均工资
找出每个发薪日得不同部分平均工资,用groupby 两个主键
然后并起来两个表,通过员工id连接
用left取月份前7位
注意最后要用groupby去重
sql
# Write your MySQL query statement below
select left(t1.pay_date, 7) pay_month, t2.department_id department_id,
(
case
when t2.depAvg > t1.wholeAvg
then 'higher'
when t2.depAvg = t1.wholeAvg
then 'same'
else 'lower'
end
) comparison
from
(
# 获取每个pay_date的公司平均工资
select pay_date, avg(amount) wholeAvg
from salary
group by pay_date
) t1,
(
# 获取每个pay_date的部门平均工资
select pay_date, department_id, avg(amount) depAvg
from salary s, employee e
where s.employee_id = e.employee_id
group by pay_date, department_id # 同时作为primary key
) t2
where t1.pay_date = t2.pay_date
# 保证不重复
# dubug出来的,相同的只能有一次
group by 1, 2
总结:
迄今为止写过得最长sql
最后
以上就是朴实飞机为你收集整理的leetcodeSQL:615. 平均工资:部门与公司比较的全部内容,希望文章能够帮你解决leetcodeSQL:615. 平均工资:部门与公司比较所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复