# 查询出排名倒数第三的入职时间 select hire_date from ( select hire_date, dense_rank()over(order by hire_date desc) rnk from employees ) t1 where rnk = 3 limit 1 # 查询入职员工时间排名倒数第三的员工所有信息 select * from employees where hire_date = ( select hire_date from ( select hire_date, dense_rank()over(order by hire_date desc) rnk from employees ) t1 where rnk = 3 limit 1 );
使用dense_rank()来获取不跳跃排名;注意rank()会跳跃排名,比如有两个并列第一,那么数值上的第二名会标号为3
【其他思路】
先对所有hire_date去重排名后,使用limit m,n语法跳取出入职时间倒数第三的对应时间,而后再查询对应该入职时间的员工信息(可能不止一个)