当前位置:   article > 正文

每日一题-33(查询员工的累计薪水)_(2)请使用查询语句,查询每个员工除最近一个月(即最大月)之外,剩下近三个月的累计

(2)请使用查询语句,查询每个员工除最近一个月(即最大月)之外,剩下近三个月的累计

题33:

根据下表编写SQL语句,对于每个员工,查询他除最近一个月(即最大月)之外,剩下每个月的近三个月的累计薪水(不足三个月也要计算),结果请按Id升序,然后按Month降序显示。
在这里插入图片描述
解题思路:用sum()over(partition by…order by…rows…)聚合窗口函数。
(1)按照员工ID分组,月份升序,对薪水Salary进行逐月累计求和;
(2)(1)获得的累计薪水还要加上一个限制条件:最近三个月。所以再加上一个子句,取当前月和前两个月的薪水累计,即可得到每个员工每个月最近三个月的累计薪水;
(3)筛选条件是月份不在最大月(也就是当前月);
(4)最后按照ID升序,Month降序排序即可。

select id, month, sum(salary) over (partition by id order by month range 2 preceding) as Salary 
from employee
where (id,month) not in (select id,max(month) from Employee group by id)--排除最大月
order by id, month desc;
  • 1
  • 2
  • 3
  • 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/950219
推荐阅读
相关标签
  

闽ICP备14008679号