Thử một CTE - Biểu thức Bảng Phổ biến:
WITH Salaries AS
(
SELECT
SalaryAmount, ROW_NUMBER() OVER(ORDER BY SalaryAmount DESC) AS 'RowNum'
FROM
dbo.SalaryTable
)
SELECT
SalaryAmount
FROM
Salaries
WHERE
RowNum <= 5
Điều này nhận được 5 mức lương cao nhất theo thứ tự giảm dần - bạn có thể chơi với RowNumn
giá trị và về cơ bản truy xuất bất kỳ phần nào từ danh sách tiền lương.
Có các chức năng xếp hạng khác
có sẵn trong SQL Server cũng có thể được sử dụng - ví dụ:có NTILE
điều này sẽ chia kết quả của bạn thành n nhóm có kích thước bằng nhau (càng chặt chẽ càng tốt), vì vậy bạn có thể ví dụ:tạo 10 nhóm như thế này:
WITH Salaries AS
(
SELECT
SalaryAmount, NTILE(10) OVER(ORDER BY SalaryAmount DESC) AS 'NTile'
FROM
dbo.SalaryTable
)
SELECT
SalaryAmount
FROM
Salaries
WHERE
NTile = 1
Điều này sẽ chia tiền lương của bạn thành 10 nhóm có quy mô bằng nhau - và nhóm có NTile=1
là nhóm "10% lương cao nhất".