Pruebe una CTE - Expresión de tabla común:
WITH Salaries AS
(
SELECT
SalaryAmount, ROW_NUMBER() OVER(ORDER BY SalaryAmount DESC) AS 'RowNum'
FROM
dbo.SalaryTable
)
SELECT
SalaryAmount
FROM
Salaries
WHERE
RowNum <= 5
Esto obtiene los 5 mejores salarios en orden descendente:puede jugar con RowNumn
valor y básicamente recuperar cualquier porción de la lista de salarios.
Hay otras funciones de clasificación
disponible en SQL Server que también se puede usar, p. hay NTILE
que dividirá sus resultados en n grupos de igual tamaño (lo más cerca posible), por lo que podría, p. crea 10 grupos como este:
WITH Salaries AS
(
SELECT
SalaryAmount, NTILE(10) OVER(ORDER BY SalaryAmount DESC) AS 'NTile'
FROM
dbo.SalaryTable
)
SELECT
SalaryAmount
FROM
Salaries
WHERE
NTile = 1
Esto dividirá sus salarios en 10 grupos de igual tamaño, y el que tiene NTile=1
es el grupo de salarios "TOP 10%".