检索超过某个值的所有行
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()。
我在 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()。