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

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

Linda Hamilton
リリース: 2024-12-20 16:38:10
オリジナル
947 人が閲覧しました

How Can I Efficiently Find the Nth Maximum Salary in a Database?

給与テーブル内の nᵗʰ 最高給与の特定

給与テーブルから 3 番目または nᵗʰ 最高給与を見つけることは、次の場合によく使用される要件です。さまざまなデータ分析タスク。この最適化を実現するには、いくつかの方法を使用できます。

行番号テクニック:

このアプローチでは、各給与値の行番号を昇順で計算し、選択する必要があります。希望の行番号に対応する給与 (たとえば、n=2 または n=3 の場合は 2 番目と 3 番目)。次のクエリはこれを示しています。

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)
ログイン後にコピー

サブクエリ メソッド:

別の最適化では、サブクエリを利用して nᵗʰ 最大給与の位置を決定します。サブクエリは各従業員の給与を超える個別の給与の数をカウントし、外側のクエリは給与がランク条件を満たす従業員を選択します:

SELECT *
FROM Employee Emp1
WHERE (N-1) = (
               SELECT COUNT(DISTINCT(Emp2.Salary))
               FROM Employee Emp2
               WHERE Emp2.Salary > Emp1.Salary
               )
ログイン後にコピー

トップ キーワード アプローチ:

この方法では、サブクエリを使用して n 個の一意の最大給与を特定し、その後、並べ替えて選択します。 nᵗʰ給与:

SELECT TOP 1 salary
FROM (
      SELECT DISTINCT TOP n salary
      FROM employee
      ORDER BY salary DESC
      ) a
ORDER BY salary
ログイン後にコピー

これらの最適化された手法を採用することにより、給与テーブルから 3 番目または nᵗʰ の最高給与を取得するプロセスがより効率的かつ大規模なデータセットに対してスケーラブルになります。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート