Pilih baris pertama dalam PostgreSQL GROUP BY group
Dalam PostgreSQL, memilih baris pertama setiap kumpulan dalam operasi GROUP BY adalah keperluan biasa. Untuk ini kita boleh menggunakan klausa DISTINCT ON
yang berkuasa.
<code class="language-sql">SELECT DISTINCT ON (customer) id, customer, total FROM purchases ORDER BY customer, total DESC</code>
DISTINCT ON
membolehkan kita mentakrifkan ungkapan yang dianggap pendua. Dalam contoh ini, kami menetapkan lajur customer
, yang bermaksud bahawa hanya baris dengan nilai customer
yang sama akan dianggap pendua.
ORDER BY
mentakrifkan susunan baris diproses. Baris pertama dalam setiap kumpulan customer
akan menjadi baris dengan jumlah nilai tertinggi. Jika terdapat berbilang baris dengan jumlah nilai maksimum yang sama, faktor penentu ialah susunan lajur id
ditakrifkan.
Isi penting
DISTINCT ON
ialah sambungan kepada PostgreSQL yang membolehkan kami menentukan ungkapan yang menentukan pendua. DISTINCT ON
mesti sepadan dengan ungkapan utama dalam klausa ORDER BY
. ORDER BY
boleh digunakan untuk mengutamakan baris dalam setiap kumpulan. SELECT
yang tiada dalam klausa DISTINCT ON
atau ORDER BY
. customer
, total
dan id
, dalam susunan yang sama dengan pertanyaan, akan memberikan prestasi terbaik. Nota Tambahan
Untuk data dengan customer
kardinaliti lajur tinggi (sebilangan kecil baris setiap pelanggan), kaedah DISTINCT ON
adalah sangat cekap. Walau bagaimanapun, untuk customer
data dengan kardinaliti lajur rendah (bilangan baris yang besar bagi setiap pelanggan), teknik pertanyaan lain mungkin lebih cekap.
Atas ialah kandungan terperinci Bagaimana untuk Memilih Baris Pertama Setiap Kumpulan dalam PostgreSQL GROUP BY Query?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!