Prøv et 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
Dette får de 5 bedste lønninger i faldende rækkefølge - du kan spille med RowNumn
værdi og stort set hente ethvert udsnit fra listen over lønninger.
Der er andre rangeringsfunktioner
tilgængelig i SQL Server, der også kan bruges - f.eks. der er NTILE
som vil opdele dine resultater i n grupper af lige store (så tæt som muligt), så du kan f.eks. opret 10 grupper som denne:
WITH Salaries AS
(
SELECT
SalaryAmount, NTILE(10) OVER(ORDER BY SalaryAmount DESC) AS 'NTile'
FROM
dbo.SalaryTable
)
SELECT
SalaryAmount
FROM
Salaries
WHERE
NTile = 1
Dette vil opdele dine lønninger i 10 grupper af samme størrelse - og den med NTile=1
er løngruppen "TOP 10%".