Probeer een CTE - Algemene tabeluitdrukking:
WITH Salaries AS
(
SELECT
SalaryAmount, ROW_NUMBER() OVER(ORDER BY SalaryAmount DESC) AS 'RowNum'
FROM
dbo.SalaryTable
)
SELECT
SalaryAmount
FROM
Salaries
WHERE
RowNum <= 5
Dit krijgt de top 5 salarissen in aflopende volgorde - je kunt spelen met de RowNumn
waarde en haal in feite elk deel uit de lijst met salarissen.
Er zijn andere rangschikkingsfuncties
beschikbaar in SQL Server die ook kan worden gebruikt - b.v. er is NTILE
waarmee uw resultaten worden opgesplitst in n groepen van gelijke grootte (zo dicht mogelijk bij elkaar), zodat u b.v. maak 10 groepen op deze manier aan:
WITH Salaries AS
(
SELECT
SalaryAmount, NTILE(10) OVER(ORDER BY SalaryAmount DESC) AS 'NTile'
FROM
dbo.SalaryTable
)
SELECT
SalaryAmount
FROM
Salaries
WHERE
NTile = 1
Dit verdeelt uw salarissen in 10 groepen van gelijke grootte - en die met NTile=1
is de "TOP 10%"-groep van salarissen.