Rumah >pangkalan data >tutorial mysql >Bagaimana untuk mendapatkan baris N teratas untuk setiap kumpulan di MySQL?
Mengekstrak baris N atas untuk setiap kumpulan dalam mysql
perlu mengambil baris N atas untuk setiap kumpulan dalam data MySQL anda? Pesanan standard mungkin tidak selalu memberi anda hasil yang anda harapkan. Panduan ini menunjukkan cara menggunakan fungsi tetingkap kuat MySQL, seperti, ROW_NUMBER
, dan RANK
, untuk mencapai ini dengan cekap. DENSE_RANK
(kunci utama), PKID
(kategori), dan CATID
lajur. Untuk mendapatkan 5 baris teratas untuk setiap value
, gunakan fungsi CATID
: ROW_NUMBER
SELECT PKID, CATID, value, ROW_NUMBER() OVER (PARTITION BY CATID ORDER BY value DESC) AS RowNum FROM table_name;
memberikan pangkat yang unik dalam setiap kumpulan ROW_NUMBER
, yang diperintahkan oleh CATID
(turun dalam kes ini). Untuk menapis hanya 5 teratas, bungkus ini dalam subquery: value
SELECT PKID, CATID, value FROM ( SELECT PKID, CATID, value, ROW_NUMBER() OVER (PARTITION BY CATID ORDER BY value DESC) AS RowNum FROM table_name ) AS subquery WHERE RowNum <= 5;pertanyaan halus ini dengan cekap mengambil hanya 5 baris teratas setiap kategori, menyediakan penyelesaian yang tepat dan dioptimumkan untuk keperluan pengambilan data anda. Ingatlah untuk menyesuaikan keadaan
untuk mengawal bilangan baris teratas yang anda mahukan setiap kumpulan.
Atas ialah kandungan terperinci Bagaimana untuk mendapatkan baris N teratas untuk setiap kumpulan di MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!