Prova un CTE - Espressione di tabella comune:
WITH Salaries AS
(
SELECT
SalaryAmount, ROW_NUMBER() OVER(ORDER BY SalaryAmount DESC) AS 'RowNum'
FROM
dbo.SalaryTable
)
SELECT
SalaryAmount
FROM
Salaries
WHERE
RowNum <= 5
Questo ottiene i primi 5 stipendi in ordine decrescente:puoi giocare con RowNumn
valore e sostanzialmente recuperare qualsiasi fetta dall'elenco degli stipendi.
Sono disponibili altre funzioni di classificazione
disponibile in SQL Server che può essere utilizzato, ad es. c'è NTILE
che dividerà i tuoi risultati in n gruppi di uguali dimensioni (il più vicino possibile), quindi potresti ad es. crea 10 gruppi come questo:
WITH Salaries AS
(
SELECT
SalaryAmount, NTILE(10) OVER(ORDER BY SalaryAmount DESC) AS 'NTile'
FROM
dbo.SalaryTable
)
SELECT
SalaryAmount
FROM
Salaries
WHERE
NTile = 1
Questo dividerà i tuoi stipendi in 10 gruppi di uguali dimensioni - e quello con NTile=1
è il gruppo di stipendi "TOP 10%".