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

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

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

select

e.emp_no,

s1.salary-s2.salary growth

from employees e

join salaries s1

on s1.to_date='9999-01-01'

and s1.emp_no=e.emp_no

join salaries s2

on s2.from_date=e.hire_date 

and s2.emp_no=e.emp_no

order by growth

#理清思路:
找到每个员工现在在职的salary和对应的时间9999-01-01,入职的salary和时间hire_date、from_date,然后通过连续两次连接,查询在职salary-入职salary后别名growth,最后升序排序;

知识点及提疑:

1.单指一次表连接,它的连接键是否有先后顺序,是否可以用and?(上面是双连接键吗?)

答:用and那么前后就没有先后顺序,包括如:s1.emp_no=e.emp_no左右调换也没关系。

2.s1.salary-s2.salary字段名对应列的数值可直接在select后加减+-;

3.二次连接from...join...on(and)...join...on(and)...这种语法需要彻底理解;

4.为什么最后的grouth可以直接用order by排序,按道理不是先from...最后再select...的吗?

应该还没检测到growth才对,又不是检测到窗口函数会返回?



全部评论

相关推荐

2025-12-25 16:26
已编辑
河北科技学院 Java
勇敢的牛油不服输:2800-300那不等于2500一个月吗兄弟们
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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