比较部门平均工资与公司平均工资
题目来源:leetcode 615
解题思路:求出每个部门的平均工资 ---> 求出公司的平均工资 ----> 两者关联对比
① 求出每个部门的平均工资
SELECT substr(pay_date,1,7) pay_month, department_id, AVG(amount) avg_dept
FROM salary a, employee b
WHERE a.employee_id = b.employee_id
GROUP BY pay_month, department_id
Note: 也可以用 date_format(pay_date,'%Y-%m') 来获得月份
输出:
② 求出公司的平均工资
SELECT substr(pay_date,1,7) pay_month, AVG(amount) avg_cpy
FROM salary
GROUP BY pay_month
输出:
③ 关联对比
SELECT c.pay_month, c.department_id,
(CASE WHEN c.avg_dept > d.avg_cpy THEN 'higher'
WHEN c.avg_dept < d.avg_cpy THEN 'lower'
ELSE 'same' END) AS 'comparison'
FROM(
SELECT substr(pay_date,1,7) pay_month, department_id, AVG(amount) avg_dept
FROM salary a, employee b
WHERE a.employee_id = b.employee_id
GROUP BY pay_month, department_id) c
LEFT JOIN (
SELECT substr(pay_date,1,7) pay_month, AVG(amount) avg_cpy
FROM salary
GROUP BY pay_month )d
ON c.pay_month = d.pay_month
输出:
DONE !