给出每个员工每年薪水涨幅超过5000的员工编号,薪水变更开始日期以及薪水涨幅值,并按照薪水涨幅值逆序排列。

给出每个员工每年薪水涨幅超过5000的员工编号emp_no

http://www.nowcoder.com/questionTerminal/eb9b13e5257744db8265aa73de04fd44

由薪水涨幅值可知要求后一年的工资减去前一年的工资并且大于5000,于是想到可使用两张表使用join连接起来,然后取每条记录的两个工资相减,连接条件是员工号相同,s2表是s1表的后一年,且s2表工资减s1表的工资大于5000,最后加上薪水涨幅值的逆序排序条件即可

select s1.emp_no,s2.from_date,(s2.salary-s1.salary) as salary_growth
from salaries s1
join salaries s2
on s1.emp_no=s2.emp_no
and (strftime('%Y', s2.to_date)-strftime('%Y', s1.to_date))=1
and (s2.salary-s1.salary)>5000
order by salary_growth desc;
全部评论
考虑到员工入职时间可能短于1年,strftime('%Y', s2.to_date)-strftime('%Y', s1.to_date)<=1 会不会更完善?
点赞 回复 分享
发布于 2021-01-05 17:42

相关推荐

1 1 评论
分享
牛客网
牛客企业服务