Wypróbuj CTE — wspólne wyrażenie tabelowe:
WITH Salaries AS
(
SELECT
SalaryAmount, ROW_NUMBER() OVER(ORDER BY SalaryAmount DESC) AS 'RowNum'
FROM
dbo.SalaryTable
)
SELECT
SalaryAmount
FROM
Salaries
WHERE
RowNum <= 5
Daje to 5 najlepszych wynagrodzeń w kolejności malejącej - możesz grać z RowNumn
wartość i zasadniczo pobierz dowolny wycinek z listy wynagrodzeń.
Istnieją inne funkcje rankingowe
dostępne w SQL Server, które również można wykorzystać - m.in. jest NTILE
która podzieli Twoje wyniki na n grup o równej wielkości (tak blisko, jak to możliwe), dzięki czemu możesz np. utwórz 10 grup w ten sposób:
WITH Salaries AS
(
SELECT
SalaryAmount, NTILE(10) OVER(ORDER BY SalaryAmount DESC) AS 'NTile'
FROM
dbo.SalaryTable
)
SELECT
SalaryAmount
FROM
Salaries
WHERE
NTile = 1
To podzieli twoje pensje na 10 grup o równej wielkości - i tę z NTile=1
to grupa wynagrodzeń „TOP 10%”.