Опитайте CTE - Общ табличен израз:
WITH Salaries AS
(
SELECT
SalaryAmount, ROW_NUMBER() OVER(ORDER BY SalaryAmount DESC) AS 'RowNum'
FROM
dbo.SalaryTable
)
SELECT
SalaryAmount
FROM
Salaries
WHERE
RowNum <= 5
Това получава първите 5 заплати в низходящ ред - можете да играете с RowNumn
стойност и основно извличане на всяка част от списъка със заплати.
Има други функции за класиране
наличен в SQL Server, който също може да се използва - напр. има NTILE
което ще раздели вашите резултати на n групи с еднакъв размер (възможно най-близо), така че можете напр. създайте 10 групи по следния начин:
WITH Salaries AS
(
SELECT
SalaryAmount, NTILE(10) OVER(ORDER BY SalaryAmount DESC) AS 'NTile'
FROM
dbo.SalaryTable
)
SELECT
SalaryAmount
FROM
Salaries
WHERE
NTile = 1
Това ще раздели вашите заплати на 10 групи с еднакъв размер - и тази с NTile=1
е "ТОП 10%" група заплати.