Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Cekap Mencari Gaji Maksimum Ke-N dalam Pangkalan Data?

Bagaimana untuk Cekap Mencari Gaji Maksimum Ke-N dalam Pangkalan Data?

Barbara Streisand
Barbara Streisandasal
2024-12-22 10:46:28870semak imbas

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

Mencari Gaji Maksimum nᵗʰ dari Jadual Gaji

Soalan: Bagaimana kita boleh mencari yang ketiga atau nᵗʰ dengan cekap gaji maksimum daripada jadual gaji yang mengandungi lajur untuk ID pekerja, nama pekerja dan pekerja gaji?

Jawapan:

Terdapat beberapa kaedah untuk mendekati masalah ini:

Kaedah 1: Nombor Baris

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)

Kaedah ini menggunakan fungsi ROW_NUMBER() untuk menetapkan setiap gaji satu nombor baris. Kami memilih gaji pada nombor baris yang sepadan dengan jawatan yang diingini (cth., ke-2, ke-3).

Kaedah 2: Sub Pertanyaan

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

Kaedah ini menggunakan subquery untuk mengira bilangan gaji berbeza yang lebih besar daripada gaji setiap pekerja. Gaji maksima ke-n adalah untuk pekerja yang kiraan bersamaan dengan (n-1).

Kaedah 3: Kata Kunci Teratas

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

Kaedah ini menggunakan TOP kata kunci untuk memilih n gaji tertinggi. Klausa ORDER BY muktamad memastikan gaji maksimum ke-n sebenar dikembalikan.

Dengan menggunakan mana-mana kaedah ini, kami boleh mengenal pasti gaji maksimum ketiga atau ke-n dengan cekap daripada jadual gaji yang diberikan.

Atas ialah kandungan terperinci Bagaimana untuk Cekap Mencari Gaji Maksimum Ke-N dalam Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn