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 rk
from
employees
) as e
where e.rk = 3
order by emp_no asc
1、窗口函数在where后运行,因此只能用子连接,如图1(图源于B站up主 戴戴戴师兄
2、dense_rank的排序是1123,rank是1134(那可能没有NO.3),row_number是1234(没有并列)。因此要dense_rank
3、dense_rank()over(partition by...order by...desc/asc)。这里partition by 不是必须的
4、本题错误如图2

京公网安备 11010502036488号