PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Cara Mendapatkan Baris Terakhir Per Grup di PostgreSQL

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!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kembalikan Cap Waktu Unix di PostgreSQL

  2. Istilah sintaks SQL untuk 'WHERE (col1, col2) <(val1, val2)'

  3. Mendapatkan daftar tanggal dalam rentang di PostgreSQL

  4. Salin Postgres dari Variabel dengan data CSV

  5. Alat ETL Terbaik untuk Bermigrasi ke PostgreSQL