ホームページ >データベース >mysql チュートリアル >データベースから N 番目の最高給与を効率的に見つけるにはどうすればよいですか?

データベースから N 番目の最高給与を効率的に見つけるにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-22 10:46:28903ブラウズ

How to Efficiently Find the Nth Maximum Salary in a Database?

給与表から nᵗʰ の最大給与を求める

質問: 3 番目の nᵗʰ を効率的に見つけるにはどうすればよいですか?従業員 ID、従業員名、および従業員の列を含む給与テーブルからの最高給与給与?

答え:

この問題に対処するにはいくつかの方法があります:

方法 1: 行番号

SELECT Salary, EmpName
FROM
  (
   SELECT Salary, EmpName, ROW_NUMBER() OVER(ORDER BY Salary) As RowNum
   FROM EMPLOYEE
   ) As A
WHERE A.RowNum IN (2,3)

このメソッドは ROW_NUMBER() 関数を使用して各給与を行に割り当てます 番号。希望のポジション (2 位、3 位など) に対応する行番号の給与を選択します。

方法 2: サブクエリ

SELECT *
FROM Employee Emp1
WHERE (N-1) = (
               SELECT COUNT(DISTINCT(Emp2.Salary))
               FROM Employee Emp2
               WHERE Emp2.Salary > Emp1.Salary
               )

このメソッドは各従業員の給与を超える個別の給与の数を数えるサブクエリ。 n 番目の最高給与は、カウントが (n-1) に等しい従業員のものです。

方法 3: 最上位のキーワード

SELECT TOP 1 salary
FROM (
      SELECT DISTINCT TOP n salary
      FROM employee
      ORDER BY salary DESC
      ) a
ORDER BY salary

この方法では TOP を使用します。キーワードを使用して、n 番目の最高給与を選択します。最後の ORDER BY 句により、実際の n 番目の最大給与が返されることが保証されます。

これらのメソッドのいずれかを使用することで、特定の給与テーブルから 3 番目または n 番目の最大給与を効率的に特定できます。

以上がデータベースから N 番目の最高給与を効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。