自动做网站,大理建设投资有限公司网站,德州网站建设 绮畅,企业seo优化方案文章目录1. 题目2. 解题1. 题目
给如下两个表#xff0c;写一个查询语句#xff0c;求出在每一个工资发放日#xff0c;每个部门的平均工资与公司的平均工资的比较结果 #xff08;高 / 低 / 相同#xff09;。
表#xff1a; salary
| id | employee_id | amount | p…
文章目录1. 题目2. 解题1. 题目
给如下两个表写一个查询语句求出在每一个工资发放日每个部门的平均工资与公司的平均工资的比较结果 高 / 低 / 相同。
表 salary
| id | employee_id | amount | pay_date |
|----|-------------|--------|------------|
| 1 | 1 | 9000 | 2017-03-31 |
| 2 | 2 | 6000 | 2017-03-31 |
| 3 | 3 | 10000 | 2017-03-31 |
| 4 | 1 | 7000 | 2017-02-28 |
| 5 | 2 | 6000 | 2017-02-28 |
| 6 | 3 | 8000 | 2017-02-28 |employee_id 字段是表 employee 中 employee_id 字段的外键。
| employee_id | department_id |
|-------------|---------------|
| 1 | 1 |
| 2 | 2 |
| 3 | 2 |对于如上样例数据结果为
| pay_month | department_id | comparison |
|-----------|---------------|-------------|
| 2017-03 | 1 | higher |
| 2017-03 | 2 | lower |
| 2017-02 | 1 | same |
| 2017-02 | 2 | same |解释
在三月公司的平均工资是 (9000600010000)/3 8333.33…
由于部门 ‘1’ 里只有一个 employee_id 为 ‘1’ 的员工 所以部门 ‘1’ 的平均工资就是此人的工资 9000 。 因为 9000 8333.33 所以比较结果是 ‘higher’。
第二个部门的平均工资为 employee_id 为 ‘2’ 和 ‘3’ 两个人的平均工资为 (600010000)/28000 。 因为 8000 8333.33 所以比较结果是 ‘lower’ 。
在二月用同样的公式求平均工资并比较比较结果为 ‘same’ 因为部门 ‘1’ 和部门 ‘2’ 的平均工资与公司的平均工资相同都是 7000 。 来源力扣LeetCode 链接https://leetcode-cn.com/problems/average-salary-departments-vs-company 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
# Write your MySQL query statement belowselect distinct pay_month, department_id, case when dep_avg total_avg then higherwhen dep_avg total_avg then sameelse lower end as comparison
from
( # 平均部门工资, 公司平均工资select department_id, avg(amount) over(partition by department_id, date_format(pay_date, %Y-%m)) dep_avg,date_format(pay_date, %Y-%m) pay_month,avg(amount) over(partition by date_format(pay_date, %Y-%m)) total_avgfrom salary s left join employeeusing(employee_id)
) t我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号Michael阿明一起加油、一起学习进步