题解 | 每个部门薪资排名前两名员工
每个部门薪资排名前两名员工
https://www.nowcoder.com/practice/89329eadd4a64126b1cd326ea0b7eff7
#一眼窗口函数
with rk_table as(
select employee_name,department,salary,rank() over(partition by department order by salary desc) as rk
from employees
)
select department,employee_name,salary
from rk_table
where rk<=2
order by department,salary desc;
这个题应该得分辨出来选用哪儿一个窗口排序函数,这个题给的例子中可以看出来第三个部门三个都是第一就输出了三个,没输出第二大的了,所以应该是使用rank,这样排序的时候就是1114,所以就跳号了。
这是第一次没选对窗口函数,这个题很好要记住!