27题解法

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

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

题目:给出每个员工每年薪水涨幅超过5000的员工编号emp_no、薪水变更开始日期from_date以及薪水涨幅值salary_growth,并按照salary_growth逆序排列。
提示:在sqlite中获取datetime时间对应的年份函数为strftime('%Y', to_date)
(数据保证每个员工的每条薪水记录to_data-from_data=1年,而且同一员工的下一条薪水记录from_data=上一条薪水记录的to_data)
方法:
select s1.emp_no,s2.from_date,(s2.salary-s1.salary) salary_growth
from salaries s1
join salaries s2
on s1.emp_no = s2.emp_no and s1.to_date = s2.from_date
where s2.salary-s1.salary > 5000
order by salary_growth desc

全部评论
s1.emp_no=s2.emp_no 这个条件能否去掉呢? s1.to_date = s2.from_date不能用来连接两个表并做条件限定吗?
1 回复 分享
发布于 2020-10-14 11:48
我想问一下, "where s2.salary-s1.salary > 5000" 这个写成 "where salary_growth > 5000" 会不会使执行时间加长? 若加长,是为什么?
点赞 回复 分享
发布于 2020-09-23 21:52
和你一样的东西,只通过了百分之50
点赞 回复 分享
发布于 2020-11-10 17:02
员工只要有一年薪水涨幅超过5000就可以吗? 题意的中文感觉像要求找出每年薪水涨幅都超5000的员工 测试用例在这两中理解下没有区别。 但如果再增加一条数据mysql> INSERT INTO salaries VALUES(10002,78527,'1999-08-03','2000-08-03'); 就会看出结果的差别了
点赞 回复 分享
发布于 2020-12-10 11:18

相关推荐

数学转码崽:一直给我推,投了又不理,理了又秒挂
点赞 评论 收藏
分享
03-16 13:56
湖南大学 C++
点赞 评论 收藏
分享
评论
23
1
分享

创作者周榜

更多
牛客网
牛客企业服务