美文网首页
数据库第185题-部门工资前三高的所有员工

数据库第185题-部门工资前三高的所有员工

作者: 何几时 | 来源:发表于2021-03-20 16:16 被阅读0次

思路一:“你”比“我”大的数量是多少方法

e1=e2=employees,找出排名前三的,也就是“你”比“我”大的数据条数小于3,记住不能是小于等于,因为等于的话意味着在“我”前面有三个人,那我不就第四名了。

image.png
select d.Name Department,e1.Name Employee,e1.Salary Salary
from Employee e1
join Department d on e1.DepartmentID=d.Id 
where 3 > (
    select count(distinct e2.Salary)
    from Employee e2
    where e2.Salary > e1.Salary and e1.DepartmentID=e2.DepartmentID
);

需要提出的是: 子查询中的 select count(distinct e2.Salary) 语句就是实现 dense_rank() 的效果


思路二:开窗函数先排序

这个题解参考的是排名第四的解析

select d.Department, new_e.Name Employee,new_e.Salary 
from (select DepartmentID,Name,dense_rank() over(partition by DepartmentId order by Salary desc) ranking) new_e 
join Department d on new_e.DepartmentID=d.Name
where new_e.ranking in (1,2,3)
group by d.ID;

相关文章

网友评论

      本文标题:数据库第185题-部门工资前三高的所有员工

      本文链接:https://www.haomeiwen.com/subject/xyswcltx.html