美文网首页
Leetcode数据库题目-579.查询员工的累计薪水

Leetcode数据库题目-579.查询员工的累计薪水

作者: kaiker | 来源:发表于2019-05-25 00:34 被阅读0次
    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
        count_salary.id id,
        month,
        salary
    from
    --第一部分来算近三个月工资的总和
    (select
        e1.id,
        e1.month,
        sum(e2.salary) as salary
    from
        employee e1, employee e2
    where
        e1.id = e2.id
        and e1.month-e2.month <= 2
        and e1.month-e2.month>=0
    group by
        e1.id,
        e1.month) count_salary
    left join
    --排除掉最近一个月
    (select
        id,
        max(month) as mmonth
    from
        employee
    group by
        id) mmonth
    on
        count_salary.id = mmonth.id
    where
        month <> mmonth
    order by
        id,
        month desc
    

    相关文章

      网友评论

          本文标题:Leetcode数据库题目-579.查询员工的累计薪水

          本文链接:https://www.haomeiwen.com/subject/jjiozqtx.html