LeetCode 【困难】数据库-第185:部门工资前三高的所有员工

select 
d.name as Department,
f.name as Employee,
Salary
from department d 
inner join 
(select * from 
(
    select *,
    dense_rank() over (partition by departmentid order by salary desc) as dense_ranks 
    from employee e    # 第一步:先顺序排序
) b
where dense_ranks <= 3   # 第二步:筛选出来前三名,必须在第一步的基础外进行筛选,否则报错
) f 
on d.id = f.departmentid;  # 第三步:连接表、输出结果信息

备注:前三名的筛选,必须是要在排序之后,重新在该表中去筛选。否则报错。

原文地址:https://www.cnblogs.com/Tdazheng/p/14920000.html