题解 | #查找入职员工时间排名倒数第三的员工所有信息#
查找入职员工时间排名倒数第三的员工所有信息
http://www.nowcoder.com/practice/ec1ca44c62c14ceb990c3c40def1ec6c
注意:可能会存在同一个日期入职的员工,所以入职员工时间排名倒数第三的员工可能不止一个。 这一点很重要,我想到了两种办法,一种是直接使用窗口函数然后取出排名第3的数据,另外一种是对入职日期进行排序去重取第3个数据,然后去原表里面查询。
1.直接使用窗口函数然后取出排名第3的数据
select a.* from employees a join
(select emp_no,dense_rank() over(order by hire_date desc) num
from employees) b
on a.emp_no=b.emp_no where b.num=3;
2.对入职日期进行排序去重使用limit取第3个数据,然后去原表里面查询
select * from employees where hire_date=
(select distinct hire_date from employees order by hire_date desc limit 2,1);