我想找到每个部门的前2名收入者
table => staff_masters 拥有" staff_name"工作人员专栏和" dept_code"对应的部门。
我试着喜欢这个
SELECT TOP 2 staff_sal
FROM staff_masters
GROUP BY dept_code;
请使用分组条款。
答案 0 :(得分:1)
您可以使用row_number()
:
select sm.*
from (select dept_code, staff_sal,
row_number() over (partition by dept_code order by staff_sal desc) as seqnum
from staff_masters
) sm
where seqnum <= 2;
如果您需要不同工资,则可以使用dense_rank()
而不是row_number()
。
答案 1 :(得分:0)
您可以使用Row_Number()
窗口函数执行此操作:
Select Dept_Code, Staff_Sal
From
(
Select Dept_Code, Staff_Sal,
Row_Number() Over (Partition By Dept_Code Order By Staff_Sal Desc) As RN
From Staff_Masters
) A
Where RN <= 2
Order By Dept_Code, RN