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

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

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

select s1.emp_no,(s1.salary-s2.salary) growth
from
(select salaries.emp_no,salaries.salary
from salaries
 where to_date="9999-01-01"
)s1,
(select salaries.emp_no,salaries.salary
from salaries,employees where
salaries.from_date=employees.hire_date and salaries.emp_no=employees.emp_no) s2
where s1.emp_no=s2.emp_no ORDER BY growth

这道题不严谨吧,考虑了离职员工就会答案不对,但是题干有没有给出要忽略离职员工,上面的sql是忽略离职员工,s1是当前工资,s2是初始工资
如果不忽略离职员工,应该是

select s1.emp_no,(s1.salary-s2.salary) growth
from
(select salaries.emp_no,salaries.salary
from salaries,(select salaries.emp_no,max(to_date) to_date
              from salaries GROUP BY emp_no) s3 
 where salaries.to_date=s3.to_date and salaries.emp_no=s3.emp_no
)s1,
(select salaries.emp_no,salaries.salary
from salaries,employees where
salaries.from_date=employees.hire_date and salaries.emp_no=employees.emp_no) s2
where s1.emp_no=s2.emp_no ORDER BY growth

s3查询的是员工的to_date和员工工号

全部评论

相关推荐

面了100年面试不知...:头像换成柯南再试试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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