給与テーブル内の 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 サイトの他の関連記事を参照してください。