检索超过特定值的所有行

时间:2015-09-30 17:08:43

标签: sql sql-server sql-server-2014

我在Sql server中有一个包含Department Name,employee和salary的表。我想要检索每个部门中前10个值都有薪水的所有员工。基本上,在部门名称上做一个分区,按薪水排序,然后从部门获得第10个薪水,让每个人的工资大于或等于第10个...... 我该怎么做?

2 个答案:

答案 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