# 同一时期入职的员工可能有多个,
# 所以这种先给它按hire_date desc排序,再limit 2,3取一行的方法会有遗漏
# limit一般用在取指定行数的地方(需要选取的行的数量是确定的情况)
select
emp_no,
birth_date,
first_name,
last_name,
gender,
hire_date
from
(
select *,
dense_rank() over(order by hire_date desc) as rk
from employees
) as s1
where rk = 3
order by emp_no asc
;
方法二 更简洁
SELECT *
FROM employees
WHERE hire_date = (
SELECT DISTINCT hire_date
FROM employees
ORDER BY hire_date DESC -- 降序
LIMIT 2,1 -- 要升序的倒数第三的日期,就是降序的正数第三的日期
);

京公网安备 11010502036488号