Dalam jadual dengan berbilang titik data dan ciri kumpulan, mengenal pasti nilai n maksimum teratas boleh menjadi penting untuk data analisis. Artikel ini meneroka pendekatan yang cekap untuk mengekstrak nilai ini menggunakan MySQL.
Pendekatan tradisional menggunakan fungsi GROUP BY dan MAX() hanya memberikan nilai maksimum untuk setiap kumpulan, menjadikan pemilihan nilai n teratas tidak dipenuhi. Untuk mengatasi had ini, pendekatan berbilang pertanyaan digunakan.
Untuk memilih 2 nilai maksimum teratas daripada jadual sampel yang disediakan, pertanyaan berikut boleh digunakan:
SELECT max(column1) m FROM table t GROUP BY column2 UNION SELECT max(column1) m FROM table t WHERE column1 NOT IN (SELECT max(column1) WHERE column2 = t.column2)
Pertanyaan ini mengembalikan hasil yang dijangkakan:
3 4 7 8
Untuk nilai arbitrari n, teknik yang lebih maju boleh digunakan untuk mensimulasikan kedudukan fungsi. Artikel yang dipautkan dalam respons memberikan contoh terperinci tentang pendekatan sedemikian.
Secara khusus, pertanyaan yang diubah suai boleh digunakan untuk mencapai hasil yang diinginkan:
SELECT t.* FROM (SELECT grouper, (SELECT val FROM table li WHERE li.grouper = dlo.grouper ORDER BY li.grouper, li.val DESC LIMIT 2,1) AS mid FROM ( SELECT DISTINCT grouper FROM table ) dlo ) lo, table t WHERE t.grouper = lo.grouper AND t.val > lo.mid
Dengan menggantikan kerapu dan val dengan yang sesuai nama lajur, pertanyaan menjana hasil di mana setiap kumpulan mengandungi nilai n maksimum teratas.
Adalah penting untuk diperhatikan bahawa klausa LIMIT dalam subkueri mengawal nilai n, dengan sintaks LIMIT n,1. Dengan melaraskan n, bilangan nilai maksimum teratas yang diingini boleh diperoleh semula.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengeluarkan Nilai Maksimum N Teratas Dengan Cekap Daripada Jadual MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!