1.子查询必须写别名
2.dense_rank() over(order by ): DENSE_RANK() 是一个窗口函数,它和 OVER 子句搭配使用,用于对结果集里的行进行排名
3.与其他排名函数的区别:
RANK():当存在并列排名时,RANK()会跳过后续的排名序号。例如有两个并列第一,下一个排名就是第三。ROW_NUMBER():为结果集中的每一行分配一个唯一的连续序号,不管是否有并列情况。DENSE_RANK():在有并列排名时,不会跳过后续的排名序号。例如有两个并列第一,下一个排名是第二。
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
)e
where
rk =3
order by
emp_no asc;