Rumah >pangkalan data >tutorial mysql >Bagaimana Mengeluarkan Rekod N Teratas dengan Cekap daripada Data Dikumpulkan?

Bagaimana Mengeluarkan Rekod N Teratas dengan Cekap daripada Data Dikumpulkan?

Barbara Streisand
Barbara Streisandasal
2025-01-25 10:05:09268semak imbas

How to Efficiently Extract the Top N Records from Grouped Data?

Rekod teratas dalam pengekstrakan kecekapan tinggi data kumpulan

Anggapkan bahawa terdapat set data berstruktur, termasuk kakitangan, kumpulan, dan umur.

Hasil yang diharapkan:

Matlamatnya adalah untuk mengambil dua individu tertua dalam setiap kumpulan.

Penyelesaian yang sedia ada:

Kaedah sebelumnya (diilhamkan oleh pertanyaan yang dicadangkan oleh @Bohemian) untuk mengambil satu baris atas untuk setiap kumpulan:

penyelesaian yang dipertingkatkan menggunakan kesatuan:

<code class="language-sql">select * 
from (select * from mytable order by `Group`, Age desc, Person) x
group by `Group`</code>
Satu cara untuk memperluaskan fungsi ini adalah dengan menggunakan kesatuan semua pengendali, supaya rekod kuantiti yang ditentukan untuk setiap kumpulan dapat diambil:

Gunakan alternatif nombor baris:

Kaedah lain adalah untuk menghasilkan nombor baris untuk setiap rekod, dan kemudian skrin mengikut nombor baris ini:
<code class="language-sql">(
  select *
  from mytable 
  where `group` = 1
  order by age desc
  LIMIT 2
)
UNION ALL
(
  select *
  from mytable 
  where `group` = 2
  order by age desc
  LIMIT 2
)</code>

Kesimpulan:

Berdasarkan keperluan khusus dan ciri data, kedua -dua teknologi kesatuan dan baris memberikan penyelesaian yang berkesan untuk mendapatkan rekod teratas dalam hasil kumpulan.

Atas ialah kandungan terperinci Bagaimana Mengeluarkan Rekod N Teratas dengan Cekap daripada Data Dikumpulkan?. 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