nk-sql201查找入职员工时间排名倒数第三的员工所有信息

53 阅读1分钟

1.子查询必须写别名

2.dense_rank() over(order by ): DENSE_RANK() 是一个窗口函数,它和 OVER 子句搭配使用,用于对结果集里的行进行排名

3.与其他排名函数的区别:

  • RANK() :当存在并列排名时,RANK() 会跳过后续的排名序号。例如有两个并列第一,下一个排名就是第三。
  • ROW_NUMBER() :为结果集中的每一行分配一个唯一的连续序号,不管是否有并列情况。
  • DENSE_RANK() :在有并列排名时,不会跳过后续的排名序号。例如有两个并列第一,下一个排名是第二。

image.png

    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;