当前位置:   article > 正文

对于每个员工,查询他除最近一个月(即最大月)之外,剩下每个月的近三个月的累计薪水(不足三个月也要计算),结果请按 Id 升序,然后按 Month 降序显示_employee 表保存了一年内的薪水信息,请你编写 sql 语句,对于每个员工,查询他除最

employee 表保存了一年内的薪水信息,请你编写 sql 语句,对于每个员工,查询他除最

Employee 表保存了一年内的薪水信息,请你编写 SQL 语句,对于每个员工,查询他除最近一个月(即最大月)之外,剩下每个月的近三个月的累计薪水(不足三个月也要计算),结果请按 Id 升序,然后按 Month 降序显示。

建表语句

  1. drop table Employee;
  2. Create table If Not Exists Employee (id int, month int, salary int);
  3. Truncate table Employee;
  4. insert into Employee (id, month, salary) values ('1', '1', '20');
  5. insert into Employee (id, month, salary) values ('2', '1', '20');
  6. insert into Employee (id, month, salary) values ('1', '2', '30');
  7. insert into Employee (id, month, salary) values ('2', '2', '30');
  8. insert into Employee (id, month, salary) values ('3', '2', '40');
  9. insert into Employee (id, month, salary) values ('1', '3', '40');
  10. insert into Employee (id, month, salary) values ('3', '3', '60');
  11. insert into Employee (id, month, salary) values ('1', '4', '60');
  12. insert into Employee (id, month, salary) values ('3', '4', '70');
  13. insert into Employee (id, month, salary) values ('1', '7', '90');
  14. insert into Employee (id, month, salary) values ('1', '8', '90');

试题说明:
 

 我的答案,其实也很奇怪

  1. select id, month, sum(salary) over (partition by id order by month desc)
  2. from (select id,
  3. month,
  4. salary,
  5. row_number() over (partition by id order by month ) mm
  6. from Employee) A
  7. where (id, month)
  8. not in (select id, max(month)
  9. from Employee
  10. group by id)
  11. and mm <= 3;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/950309?site
推荐阅读
相关标签
  

闽ICP备14008679号