我在Sql server中有一个包含Department Name,employee和salary的表。我想要检索每个部门中前10个值都有薪水的所有员工。基本上,在部门名称上做一个分区,按薪水排序,然后从部门获得第10个薪水,让每个人的工资大于或等于第10个...... 我该怎么做?
答案 0 :(得分:2)
select
*
from (
select
Department Name], [Employee], [Salary],
DepartmentSalaryRN = dense_rank() over(partition by [Department Name] order by [Salary] desc)
from
[dbo].[TableName]
) t
where
DepartmentSalaryRN >= 10
order by
[Department Name], DepartmentSalaryRN
听起来你想要dense_rank()。如果每个部门最多需要10名员工,请使用row_number()。
答案 1 :(得分:0)
如果我理解正确,您想使用TOP
声明。尝试类似下面的内容。
SELECT TOP 10 [Department Name], [Employee], [Salary]
FROM [dbo].[TableName]
WHERE [Department Name] = 'Name of Department'
ORDER BY [Salary] DESC
这将检索有关给定部门中前10名工资的员工的信息。
TOP
的其他信息可在此处找到:
https://msdn.microsoft.com/en-us/library/ms189463.aspx