检索超过某个值的所有行

retrieve all rows over a certain value

我在 Sql 服务器中有一个 table,其中包含部门名称、雇员和薪水。我想检索每个部门中薪水在前 10 个值中的所有员工。基本上,对部门名称进行分区,按薪水排序,然后从部门获得第 10 个薪水,并让每个人的薪水大于或等于第 10 个...... 我该怎么做?

如果我没理解错的话,你想使用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

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()。