SQL练习2:查找入职员工时间排名倒数第三的员工所有信息
题目链接:牛客网
题目描述
查找入职员工时间排名倒数第三的员工所有信息,为了减轻入门难度,目前所有的数据里员工入职的日期都不是同一天。
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
解法一
按照题目中的描述,员工入职日期都不是同一天,那么直接按照hire_date
列降序排列的结果,从第三行开始取出一行数据即可。
SELECT * FROM employees
ORDER BY hire_date DESC LIMIT 2,1;
解法二
解法一有它的局限性,当员工的入职日期有重复时,获取的结果不一定是正确的。这时可以先筛选出入职时间第三晚的日期,然后找出日期等于筛选日期的员工信息。
SELECT * FROM employees
WHERE hire_date = (SELECT hire_date
from employees
ORDER BY hire_date DESC LIMIT 2,1)