Mengekstrak Baris Terakhir untuk Setiap ID dalam Postgresql
Pertimbangkan set data dengan lajur bernama id, tarikh dan another_info. Objektifnya adalah untuk mengekstrak maklumat terakhir (baris) bagi setiap id unik.
Untuk mencapai ini dalam Postgresql, dua kaedah biasa digunakan:
Distinct On Operator
Postgresql menyediakan operator yang berbeza, yang membolehkan anda menentukan bahawa hanya nilai yang berbeza bagi lajur tertentu dikembalikan. Dalam kes ini, pengendali boleh digunakan seperti berikut:
select distinct on (id) id, date, another_info from the_table order by id, date desc;
Pertanyaan ini memastikan bahawa hanya contoh terakhir bagi setiap id unik dikembalikan, dipesan dalam susunan menurun mengikut tarikh.
Fungsi Tetingkap
Sebagai alternatif, anda boleh menggunakan fungsi tetingkap untuk mencapai hasil yang sama. Fungsi tetingkap membolehkan anda melakukan pengiraan atau pengagregatan pada set baris yang dipisahkan. Dalam kes ini, pertanyaan berikut boleh digunakan:
select id, date, another_info from ( select id, date, another_info, row_number() over (partition by id order by date desc) as rn from the_table ) t where rn = 1 order by id;
Pertanyaan ini menggunakan fungsi row_number() untuk memberikan nombor berjujukan kepada setiap baris dalam setiap partition id. Klausa tempat menapis hasil untuk memasukkan hanya baris dengan nilai rn tertinggi (iaitu, baris terakhir untuk setiap id).
Atas ialah kandungan terperinci Bagaimana untuk mengekstrak Baris Terakhir untuk Setiap ID dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!