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
Lepaskan: 2024-12-22 10:46:28
asal
907 orang telah melayarinya

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)
Salin selepas log masuk

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
               )
Salin selepas log masuk

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
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan