dengan cekap memilih baris pertama setiap kumpulan dalam postgresql
Panduan ini menunjukkan bagaimana untuk mendapatkan entri paling awal untuk setiap kumpulan di PostgreSQL, tugas yang sama apabila bekerja dengan data dikumpulkan. Kaedah yang paling berkesan menggunakan klausa. DISTINCT ON
memanfaatkan klausa DISTINCT ON
menyediakan cara yang ringkas dan cekap untuk memilih baris pertama dari setiap kumpulan yang ditakrifkan oleh lajur yang ditentukan. Sintaksinya adalah mudah: DISTINCT ON
<code class="language-sql">SELECT DISTINCT ON (column_list) FROM table_name ORDER BY column_list, ...;</code>
Pertimbangkan jadual dengan lajur
,, dan purchases
. Untuk mencari pembelian terawal (berdasarkan lajur id
) untuk setiap pelanggan dengan jumlah tertinggi, gunakan pertanyaan ini: customer
total
id
<code class="language-sql">SELECT DISTINCT ON (customer) id, customer, total FROM purchases ORDER BY customer, total DESC, id;</code>
pengendalian null:
total
NULLS LAST
Pilih senarai fleksibiliti: ORDER BY
Senarai
SELECT
DISTINCT ON
kekhususan PostgreSQL: ORDER BY
DISTINCT ON
Untuk memerintahkan hasil akhir secara berbeza dari perintah pengelompokan, sarang pertanyaan dan memohon klausa ORDER BY
Mengoptimumkan prestasi dengan pengindeksan: dengan ketara meningkatkan prestasi pertanyaan, terutamanya apabila bilangan baris setiap pelanggan agak kecil.
Pendekatan alternatif untuk dataset besar: (customer, total DESC, id)
subqueries:
Menggunakan subquery atau subquery berkorelasi untuk mencari maksimum
untuk setiap pelanggan, kemudian pilih baris dengan minimumtotal
id
Atas ialah kandungan terperinci Bagaimana untuk mendapatkan entri terawal untuk setiap kumpulan di PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!