Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Cekap Mengambil N Baris Pertama Dalam Setiap Kumpulan dalam PostgreSQL?
PostgreSQL: Mendapatkan semula N Baris Teratas Dalam Setiap Kumpulan
Tugas yang kerap dalam PostgreSQL melibatkan pemilihan bilangan baris daripada setiap kumpulan. Ini boleh dicapai dengan cekap menggunakan teknik yang sering dipanggil "LIMIT Berkumpulan." Begini cara untuk mencapainya menggunakan fungsi tetingkap (tersedia dalam PostgreSQL 8.4 dan lebih baru):
<code class="language-sql">SELECT * FROM ( SELECT ROW_NUMBER() OVER (PARTITION BY section_id ORDER BY name) AS rn, t.* FROM xxx t ) AS x WHERE rn <= N;</code>
Penjelasan:
Fungsi tetingkap ROW_NUMBER() OVER (PARTITION BY section_id ORDER BY name)
memberikan kedudukan unik (rn
) kepada setiap baris dalam setiap kumpulan section_id
, disusun mengikut lajur name
. Pertanyaan luar kemudian menapis hasil ini, mengekalkan hanya baris yang kedudukannya (rn
) kurang daripada atau sama dengan N
(gantikan N
dengan bilangan baris yang anda inginkan bagi setiap kumpulan). Ini secara berkesan mengehadkan hasil ke baris N
teratas untuk setiap kumpulan.
Atas ialah kandungan terperinci Bagaimana untuk Cekap Mengambil N Baris Pertama Dalam Setiap Kumpulan dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!