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
のグループ 給与の「TOP 10%」グループです。