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
<code class="language-sql">SELECT PKID, CATID, value, ROW_NUMBER() OVER (PARTITION BY CATID ORDER BY value DESC) AS RowNum FROM table_name;</code>
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
<code class="language-sql">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;</code>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. <= 5
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!