Mencari Nilai N Tertinggi Tertinggi dalam Jadual MySQL
Dalam analisis dan pelaporan data, selalunya perlu untuk mendapatkan semula rekod teratas berdasarkan nilai tertinggi bagi lajur tertentu. Walau bagaimanapun, kekaburan boleh timbul apabila berbilang rekod berkongsi nilai maksimum yang sama berhampiran kedudukan N.
Soalan:
Apabila menggunakan SQL untuk memilih baris N teratas dengan yang tertinggi nilai untuk lajur tertentu, adakah pertanyaan perlu mengembalikan baris N teratas sahaja atau memasukkan baris tambahan dengan nilai maksimum yang sama?
Jawapan:
Jawapan bergantung pada sama ada anda mahu memasukkan atau mengecualikan nilai teratas pendua. Berikut ialah dua pendekatan:
Pendekatan 1: Kecualikan Nilai Tertinggi Pendua
Untuk mendapatkan hanya N baris teratas tanpa pendua, gunakan pertanyaan berikut:
SELECT * FROM t ORDER BY value DESC LIMIT N
Dalam pertanyaan ini, klausa LIMIT N mengehadkan set hasil pada baris N teratas, tidak termasuk mana-mana baris dengan nilai maksimum yang sama di bawah baris N.
Pendekatan 2: Sertakan Duplikat Atas Nilai
Untuk mendapatkan semula semua baris dengan nilai tertinggi, tanpa mengira pendua, gunakan pertanyaan berikut:
SELECT * FROM t JOIN (SELECT min(value) AS cutoff FROM (SELECT value FROM t ORDER BY value LIMIT N ) tlim ) tlim ON t.value >= tlim.cutoff;
Pertanyaan ini menggunakan subkueri untuk menentukan nilai potong bagi baris dengan nilai N tertinggi. Ia kemudiannya bergabung dengan subkueri ini dengan jadual utama menggunakan klausa ON untuk menapis baris dengan nilai lebih besar daripada atau sama dengan potongan.
Pertimbangan Tambahan:
Atas ialah kandungan terperinci Patutkah Pertanyaan N SQL Teratas Termasuk Nilai Maksimum Pendua?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!