Memilih Rekod N Teratas bagi setiap Kumpulan dalam SQL
Artikel ini meneroka teknik yang cekap untuk mendapatkan semula rekod N teratas daripada setiap kumpulan dalam set hasil SQL. Kami akan mengkaji dua pendekatan biasa:
Kaedah 1: KESATUAN SEMUA (Sesuai untuk bilangan kumpulan yang terhad)
Apabila berurusan dengan sebilangan kecil kumpulan (cth., dua), pengendali UNION ALL
menyediakan penyelesaian yang mudah. Ini melibatkan penciptaan subkueri berasingan untuk setiap kumpulan, menyusunnya mengikut lajur tertentu (cth., umur dalam susunan menurun), dan mengehadkan keputusan kepada rekod N teratas. Akhir sekali, UNION ALL
menggabungkan subkueri ini ke dalam set hasil tunggal.
Kaedah 2: Penomboran Baris (Lebih serba boleh untuk berbilang kumpulan)
Untuk senario dengan banyak kumpulan, pendekatan yang lebih berskala adalah dengan menetapkan nombor baris pada setiap rekod dalam setiap kumpulan. Ini dicapai menggunakan subkueri dengan fungsi tetingkap (seperti ROW_NUMBER()
). Klausa WHERE
berikutnya kemudian menapis hasil untuk memasukkan hanya rekod dengan nombor baris kurang daripada atau sama dengan N. Kaedah ini menawarkan fleksibiliti dan kecekapan yang lebih besar apabila mengendalikan set data yang lebih besar.
Bacaan Lanjut
Untuk pemahaman yang lebih mendalam dan strategi tambahan, rujuk sumber berguna ini:
Kaedah optimum akan bergantung pada konteks khusus dan saiz set data anda. Pertimbangkan bilangan kumpulan dan keperluan prestasi keseluruhan apabila memilih pendekatan yang paling sesuai.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Rekod N Teratas dengan Cekap daripada Keputusan SQL Berkumpulan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!