select emp_no, birth_date, first_name, last_name, gender, hire_date
from(
    select e.*, dense_rank()over(order by hire_date desc) posn
    from employees e
) as t
where t.posn=3

本题与上一题差不多,还是问排名, 所以要用到“(排序)窗口函数”和“from表嵌套子查询”,唯一的问题点就是在 “(排序)窗口函数”。三种排序方式,具体用谁。 rank(), dense_rank(), row_number()

rank() 并列不连续

dense_rank() 并列且连续

row_number()不并列但连续

从题中可以读出, 排名第三,考虑同一天入职的人也许会非常多,但他们是同时入职,也就是需要并列, 而且必须要连续,否则就有可能取不到 排名第三这个值。 所以此处就必须用到 dense_rank()函数。