2021/2/9 [SQL]查找入职员工时间排名倒数第三的员工所有信息
查找入职员工时间排名倒数第三的员工所有信息
https://www.nowcoder.com/practice/ec1ca44c62c14ceb990c3c40def1ec6c
解题思路
有可能有并列倒数第三的员工,所以用 LIMIT 去处理不太好。
我们用表的自连接做笛卡尔积,然后比较员工 A 与其他员工 BCDEF... 的入职时间,用 COUNT() 进行计算比员工 A 入职晚的人数,若没有或有与员工 A 同时入职的人,那么得出的数就是 0,所以倒数第三个员工得出得数应该是 2。
代码实现
SELECT * FROM `employees` t1 WHERE ( SELECT COUNT(*) FROM `employees` t2 WHERE t2.hire_date > t1.hire_date ) = 2;