Rumah >pangkalan data >tutorial mysql >Bagaimana untuk mendapatkan baris N teratas untuk setiap kumpulan di MySQL?

Bagaimana untuk mendapatkan baris N teratas untuk setiap kumpulan di MySQL?

DDD
DDDasal
2025-01-25 12:11:08346semak imbas

How to Get the Top N Rows for Each Group in 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

Bayangkan jadual dengan

(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!

Kenyataan:
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