Essayez une CTE - Common Table Expression :
WITH Salaries AS
(
SELECT
SalaryAmount, ROW_NUMBER() OVER(ORDER BY SalaryAmount DESC) AS 'RowNum'
FROM
dbo.SalaryTable
)
SELECT
SalaryAmount
FROM
Salaries
WHERE
RowNum <= 5
Cela obtient les 5 meilleurs salaires par ordre décroissant - vous pouvez jouer avec le RowNumn
valeur et récupère essentiellement n'importe quelle tranche de la liste des salaires.
Il existe d'autres fonctions de classement
disponible dans SQL Server qui peut également être utilisé - par ex. il y a NTILE
qui divisera vos résultats en n groupes de taille égale (aussi étroitement que possible), afin que vous puissiez par ex. créez 10 groupes comme ceci :
WITH Salaries AS
(
SELECT
SalaryAmount, NTILE(10) OVER(ORDER BY SalaryAmount DESC) AS 'NTile'
FROM
dbo.SalaryTable
)
SELECT
SalaryAmount
FROM
Salaries
WHERE
NTile = 1
Cela divisera vos salaires en 10 groupes de taille égale - et celui avec NTile=1
est le groupe de salaires "TOP 10 %".