方法1: サブクエリを使用する この方法では、内部のサブクエリを使用して、n番目に高い給与を取得します。
SELECT DISTINCT Salary
FROM Employee e1
WHERE n = (
SELECT COUNT(DISTINCT Salary)
FROM Employee e2
WHERE e2.Salary >= e1.Salary
)
このクエリでは、EmployeeテーブルのSalary列を抽出し、サブクエリを使用してその給与が一意であるn番目の位置を見つけます。外部のクエリでは、サブクエリから返されたn番目の位置の給与を選択します。
方法2: ORDER BYとLIMITを使用する この方法では、ORDER BY句とLIMIT句を使用して給与を降順に並べ替え、n番目の給与を取得します。
SELECT Salary
FROM Employee
ORDER BY Salary DESC
LIMIT n-1, 1
このクエリでは、EmployeeテーブルのSalary列を降順に並べ替え、LIMIT句を使用してn番目の給与を取得します。n-1は0から始まるインデックスであり、1つの結果のみを返すように制限されます。
方法3: ROW_NUMBER()関数を使用する この方法では、ROW_NUMBER()関数を使用して給与をランク付けし、n番目の給与をフィルタリングします。
SELECT Salary
FROM (
SELECT Salary, ROW_NUMBER() OVER (ORDER BY Salary DESC) AS RowNum
FROM Employee
) sub
WHERE RowNum = n
このクエリでは、ROW_NUMBER()関数を使用してSalary列を降順にランク付けします。外部のクエリでは、RowNumがnと一致する給与を選択します。
これらは一部の一般的なアプローチですが、SQLには他の方法もあります。データベースシステムによっては、異なる構文が必要な場合がありますので、使用しているデータベースに合わせて適切な構文を確認してください。