题解 | #获取当前薪水第二多的员工的emp_no以及其对应的薪水salary#

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

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

思路:当前工资 - 第一次发的工资(入职工资)= 成长工资

1、子查询生成当前工资表 to_date = '9999-01-01',第一次工资表 to_date = 最小日期;
2、当前工资表与第一次工资表左连接,left join;
3、成长工资growth = 当前工资 - 第一次工资 ;
4、按照成长工资排序, order by growth。
select 
sa.emp_no
,sa.salary - lo.l_sa growth -- 工资成长
from salaries sa
left join ( -- 与工作表左连接
    select -- 第一次工资
    emp_no,
    salary l_sa
    from salaries
    where (emp_no,to_date) in (
        select -- 第一次发工资日期
        emp_no
        ,min(to_date)
        from salaries
        group by emp_no -- 聚合函数必须加 group by 员工有工资调整会重复)) lo
on lo.emp_no = sa.emp_no
where sa.to_date = '9999-01-01'  -- 在职人员当前工资成长
order by growth

全部评论

相关推荐

2025-12-28 22:19
门头沟学院 Java
不敢追165女神:简历写得毫无特点,你说你要是大二或者大三找寒假实习到暑期实习这段时间,你的简历还能约到面试。但是你是研究生哥,面试官不会因为你是研究生而降低要求,反而会觉得你是研究生才学了这么一点?为什么我不找个同阶段的本科生?
简历中的项目经历要怎么写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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