215题解 | 利用窗口函数求各个时期的工资涨幅,再加总

查找在职员工自入职以来的薪水涨幅情况

https://www.nowcoder.com/practice/fc7344ece7294b9e98401826b94c6ea5

# 这种做法曲解题意了,用不着employees表,并默认salaries表中from_date最小值就是入职时间
select a.emp_no 
,sum(a.growth_p) growth
--将各个小的薪资涨幅加总,即是所求
from (
    --求出每个员工,各个任职时期下的薪资涨幅
    select emp_no
    ,salary-lag(salary,1) over(partition by emp_no order by from_date) growth_p
    from salaries
    where emp_no in (
        --筛选出还在职的员工emp_no
        select emp_no
        from salaries 
        group by emp_no
        having max(to_date)="9999-01-01"
    )
) a
group by a.emp_no 
order by growth

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务