zoukankan      html  css  js  c++  java
  • 查询员工的累计薪水

    Employee 表保存了一年内的薪水信息。

    请你编写 SQL 语句,对于每个员工,查询他除最近一个月(即最大月)之外,剩下每个月的近三个月的累计薪水(不足三个月也要计算)。

    结果请按 Id 升序,然后按 Month 降序显示。

    示例:
    输入:

    Id Month Salary
    1 1 20
    2 1 20
    1 2 30
    2 2 30
    3 2 40
    1 3 40
    3 3 60
    1 4 60
    3 4 70

    输出:

    Id Month Salary
    1 3 90
    1 2 50
    1 1 20
    2 1 20
    3 3 100
    3 2 40

    解释:

    员工 '1' 除去最近一个月(月份 '4'),有三个月的薪水记录:月份 '3' 薪水为 40,月份 '2' 薪水为 30,月份 '1' 薪水为 20。

    所以近 3 个月的薪水累计分别为 (40 + 30 + 20) = 90,(30 + 20) = 50 和 20。

    Id Month Salary
    1 3 90
    1 2 50
    1 1 20

    员工 '2' 除去最近的一个月(月份 '2')的话,只有月份 '1' 这一个月的薪水记录。

    Id Month Salary
    2 1 20

    员工 '3' 除去最近一个月(月份 '4')后有两个月,分别为:月份 '4' 薪水为 60 和 月份 '2' 薪水为 40。所以各月的累计情况如下:

    Id Month Salary
    3 3 100
    3 2 40
    
    SELECT Id,`Month`,SUM(salary) OVER(partition by Id order by month ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) salary
    FROM (select Id,`Month`,salary,row_number() over(partition by Id order by month desc ) `rank`
    from Employee)T
    WHERE `rank`!=1 
    ORDER BY Id,`Month` desc
    
    
  • 相关阅读:
    关于SQL
    win10商店或者账户连不上网
    pom.xml红叉
    3D球状标签云(兼容IE8)
    网页宽高自适应大小
    html5定位并在百度地图上显示
    【转】Javascript 中的false,零值,null,undefined和空字符串对象
    jQuery checkBox 全选的例子
    jQuery 表单验证 jquery.validator.js
    jQuery 手风琴侧边菜单
  • 原文地址:https://www.cnblogs.com/alidata/p/13599652.html
Copyright © 2011-2022 走看看