Probieren Sie einen CTE - Common Table Expression aus:
WITH Salaries AS
(
SELECT
SalaryAmount, ROW_NUMBER() OVER(ORDER BY SalaryAmount DESC) AS 'RowNum'
FROM
dbo.SalaryTable
)
SELECT
SalaryAmount
FROM
Salaries
WHERE
RowNum <= 5
Dadurch erhalten Sie die Top 5 Gehälter in absteigender Reihenfolge - Sie können mit der RowNumn
spielen Wert und im Grunde jede Scheibe aus der Gehaltsliste abrufen.
Es gibt andere Ranking-Funktionen
verfügbar in SQL Server, der ebenfalls verwendet werden kann - z. da ist NTILE
Dadurch werden Ihre Ergebnisse in n gleich große Gruppen (so eng wie möglich) aufgeteilt, sodass Sie z. Erstellen Sie 10 Gruppen wie folgt:
WITH Salaries AS
(
SELECT
SalaryAmount, NTILE(10) OVER(ORDER BY SalaryAmount DESC) AS 'NTile'
FROM
dbo.SalaryTable
)
SELECT
SalaryAmount
FROM
Salaries
WHERE
NTile = 1
Dadurch werden Ihre Gehälter in 10 gleich große Gruppen aufgeteilt - und die mit NTile=1
ist die "TOP 10 %"-Gehaltsgruppe.