Prova ett 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
Detta får de 5 bästa lönerna i fallande ordning - du kan spela med RowNumn
värde och i princip hämta valfri del från lönelistan.
Det finns andra rankningsfunktioner
tillgänglig i SQL Server som också kan användas - t.ex. det finns NTILE
vilket kommer att dela upp dina resultat i n grupper av lika stora (så nära som möjligt), så att du kan t.ex. skapa 10 grupper så här:
WITH Salaries AS
(
SELECT
SalaryAmount, NTILE(10) OVER(ORDER BY SalaryAmount DESC) AS 'NTile'
FROM
dbo.SalaryTable
)
SELECT
SalaryAmount
FROM
Salaries
WHERE
NTile = 1
Detta kommer att dela upp dina löner i 10 lika stora grupper - och den med NTile=1
är lönegruppen "TOPP 10%".