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

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

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

第一步:建一个包含emp_no和salary的在职员工临时表 a (这个表里的员工的salary都是最新的salary)

select emp_no,salary as last_salary
from salaries
where to_date = '9999-01-01'

第二步:建一个包含emp_no和salary的员工临时表b(这个表里的员工的salary都是刚入职时的员工salary)

select emp_no,salary as first_salary
from salaries
where (emp_no,from_date) in (select emp_no,min(from_date)
                                from salary
                                group by emp_no)

第三步:联结两个表

select a.emp_no,(a.last_salary-b.first_salary) as growth
from (select emp_no,salary as last_salary
from salaries
where to_date = '9999-01-01') a
left join 
(select emp_no,salary as first_salary
from salaries
where (emp_no,from_date) in (select emp_no,min(from_date)
                                from salaries
                                group by emp_no))b
on a.emp_no=b.emp_no
order by growth 
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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