如果没有第二高薪,如何获得第二高薪部门明智,然后显示第一高薪?

问题描述 投票:0回答:1

如果部门中只有一个薪水,如何找到第二高薪的部门,然后显示该第一高薪。输入为

dept_id salary
10      500      
10      600
10      1000
20      800
20      900
20      200
30      1200

输出

dept_id salary
10      600
20      800
30      1200
sql oracle group-by greatest-n-per-group
1个回答
0
投票

您可以使用窗口功能:

select dept_id, salary
from (
    select
        t.*,
        row_number() over(partition by dept_id order by salary desc) rn,
        count(*) over(partition by dept_id) cnt
    from mytable t
) t
where rn = 2 or (rn = 1 and cnt = 1)

子查询通过降低薪水对具有相同部门的记录进行排名,并计算每个部门有多少员工。然后,您可以使用此信息在外部查询中进行过滤。

© www.soinside.com 2019 - 2024. All rights reserved.