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()函数。