Coba CTE - Ekspresi Tabel Umum:
WITH Salaries AS
(
SELECT
SalaryAmount, ROW_NUMBER() OVER(ORDER BY SalaryAmount DESC) AS 'RowNum'
FROM
dbo.SalaryTable
)
SELECT
SalaryAmount
FROM
Salaries
WHERE
RowNum <= 5
Ini mendapatkan 5 gaji teratas dalam urutan menurun - Anda dapat bermain dengan RowNumn
nilai dan pada dasarnya mengambil setiap bagian dari daftar gaji.
Ada fungsi peringkat lainnya
tersedia di SQL Server yang dapat digunakan juga - mis. ada NTILE
yang akan membagi hasil Anda menjadi n grup dengan ukuran yang sama (sedekat mungkin), sehingga Anda dapat mis. buat 10 grup seperti ini:
WITH Salaries AS
(
SELECT
SalaryAmount, NTILE(10) OVER(ORDER BY SalaryAmount DESC) AS 'NTile'
FROM
dbo.SalaryTable
)
SELECT
SalaryAmount
FROM
Salaries
WHERE
NTile = 1
Ini akan membagi gaji Anda menjadi 10 kelompok dengan ukuran yang sama - dan satu dengan NTile=1
adalah kelompok gaji "TOP 10%".