Rumah > pangkalan data > tutorial mysql > Bagaimana untuk mengekstrak Baris Terakhir untuk Setiap ID dalam PostgreSQL?

Bagaimana untuk mengekstrak Baris Terakhir untuk Setiap ID dalam PostgreSQL?

Patricia Arquette
Lepaskan: 2024-12-28 15:02:11
asal
560 orang telah melayarinya

How to Extract the Last Row for Each ID in PostgreSQL?

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;
Salin selepas log masuk

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;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan