题解 | 查找入职员工时间升序排名的情况下的倒数第三的员工所有信息
查找入职员工时间升序排名的情况下的倒数第三的员工所有信息
https://www.nowcoder.com/practice/ec1ca44c62c14ceb990c3c40def1ec6c
select
emp_no,
birth_date,
first_name,
last_name,
gender,
hire_date
from(
select
emp_no,
birth_date,
first_name,
last_name,
gender,
hire_date,
dense_rank() over (
order by hire_date desc
) as drk
from
employees)x
where drk=3
order by emp_no asc;
题目要求“入职员工时间升序排名的情况下倒数第三的员工所有信息”,升序排名的情况下即第一名是最早入职的员工,倒数第三就是最晚入职的倒数第三名即"按入职时间升序排名最晚入职时间倒数第三名"--------------->其实就相当于"按入职时间降序(排名最晚入职时间在前)正数第三名"
ASC (升序) | 早 → 晚 | 很难直接定位,需要算数值 |
DESC (降序) | 晚 → 早 | 直接找 drk=3 |
1. 为什么 order by hire_date desc 不用转换?
因为 hire_date 字段的类型是 DATE(日期类型),数据库内置了日期比较规则,数据库看到 DATE 类型,会自动按时间先后排序,完全不用你转字符串!

查看13道真题和解析