Terkadang Anda mungkin perlu mendapatkan baris terakhir tabel atau mendapatkan baris terakhir per grup di PostgreSQL. Berikut cara mendapatkan record terakhir per grup di PostgreSQL.
Dapatkan Baris Terakhir dari Tabel
Katakanlah Anda memiliki tabel PostgreSQL berikut.
postgres=#create table product_sales(product varchar(10), order_date date, sale int); postgres=#insert into product_sales(product, order_date, sale) values('A','2020-05-01 03:00:00',250), ('B','2020-05-01 05:30:00',350), ('C','2020-05-01 07:45:00',1250), ('A','2020-05-02 02:34:00',450), ('B','2020-05-02 01:24:00',650), ('C','2020-05-02 12:34:00',1050), ('A','2020-05-03 04:00:45',150), ('B','2020-05-03 05:45:00',250), ('C','2020-05-03 09:50:00',1850); postgres=# select * from product_sales; product | order_date | sale ---------+---------------------+------ A | 2020-05-01 03:00:00 | 250 B | 2020-05-01 05:30:00 | 350 C | 2020-05-01 07:45:00 | 1250 A | 2020-05-02 02:34:00 | 450 B | 2020-05-02 01:24:00 | 650 C | 2020-05-02 12:34:00 | 1050 A | 2020-05-03 04:00:45 | 150 B | 2020-05-03 05:45:00 | 250 C | 2020-05-03 09:50:00 | 1850
Bonus Baca :Fungsi Buat PostgreSQL
Inilah kueri untuk mendapatkan baris terakhir tabel, tergantung pada bagaimana baris Anda diurutkan. Dalam contoh di atas, karena catatan kami ditambahkan dengan stempel waktu, kami memilih baris dengan stempel waktu terbaru.
postgres=# select * from product_sales order by order_date desc limit 1; product | order_date | sale ---------+---------------------+------ C | 2020-05-03 09:50:00 | 1850
Dalam kueri di atas, kami mengurutkan baris dalam urutan waktu yang menurun dan memilih 1 baris teratas menggunakan klausa LIMIT.
Bonus Baca :PostgreSQL Buat Skema
Dapatkan Rekor Terakhir Per Grup
Berikut query SQL untuk mendapatkan baris terakhir per grup, yaitu setiap produk.
postgres=# select distinct on (product) product, order_date, sale from product_sales order by product, order_date desc; product | order_date | sale ---------+---------------------+------ A | 2020-05-03 04:00:45 | 150 B | 2020-05-03 05:45:00 | 250 C | 2020-05-03 09:50:00 | 1850
Dalam kueri di atas, pertama-tama kita mengurutkan baris berdasarkan produk (naik) dan tanggal_pesanan (menurun). Kemudian kita menggunakan klausa DISTINCT ON untuk memilih hanya record teratas per grup, yang tidak lain adalah record terakhir per grup.
Bonus Baca :Cara Membuat Histogram di PostgreSQL
Semoga sekarang Anda bisa dengan mudah mendapatkan baris terakhir per grup di PostgreSQL.
Ubiq memudahkan untuk memvisualisasikan data dalam hitungan menit, dan memantau di dasbor waktu nyata. Cobalah Hari ini!