1. 问题
现有如下表tb
:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4fe5828287035c346b7ca8fc95695c93.png)
需求:统计查询每个部门薪资最高的前两名员工的薪水
2. 分析
看到前几字样,想到rank()
、dense_rank()
、row_number()
三个窗口函数
3. 代码实现
select *
from (
select
empno,
ename,
salary,
deptno,
row_number() over(partition by deptno order by salary desc) as rn
from tb;
) tb2
where rn < 3;