• 查询员工的累计薪水


    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
    
    
  • 相关阅读:
    AlexNet详解3
    ReLU为什么比Sigmoid效果好
    AlexNet详解2
    AlexNet详解
    微波炉蒸馄饨
    FM与PM信号的表现形式
    HTML与CSS:结构与表现
    CentOS 7安装WordPress
    nginx gzip配置
    minIni: A minimal INI file parser
  • 原文地址:https://www.cnblogs.com/alidata/p/13599652.html
Copyright © 2020-2023  润新知