Nogle gange skal du muligvis hente sidste række af tabellen eller få sidste række per gruppe i PostgreSQL. Sådan får du sidste rekord pr. gruppe i PostgreSQL.
Hent sidste række af tabellen
Lad os sige, at du har følgende PostgreSQL-tabel.
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 Læs:PostgreSQL Create Function
Her er forespørgslen for at få sidste række i tabellen, afhængigt af hvordan dine rækker er sorteret. I ovenstående eksempel, da vores registreringer er tilføjet efter tidsstempel, vælger vi rækken med seneste tidsstempel.
postgres=# select * from product_sales order by order_date desc limit 1; product | order_date | sale ---------+---------------------+------ C | 2020-05-03 09:50:00 | 1850
I ovenstående forespørgsel sorterer vi rækkerne i faldende rækkefølge efter tidsstemplet og vælger den øverste række ved hjælp af LIMIT-sætning.
Bonus Læs:PostgreSQL Opret skema
Få sidste rekord pr. gruppe
Her er SQL-forespørgslen for at få sidste række pr. gruppe, det vil sige hvert produkt.
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
I ovenstående forespørgsel sorterer vi først rækkerne efter produkt (stigende) og ordre_date (aftagende). Så bruger vi DISTINCT ON-klausulen til kun at vælge den øverste post pr. gruppe, som ikke er andet end den sidste post pr. gruppe.
Bonus Læs:Sådan opretter du histogram i PostgreSQL
Forhåbentlig kan du nu nemt få den sidste række pr. gruppe i PostgreSQL.
Ubiq gør det nemt at visualisere data på få minutter og overvåge i dashboards i realtid. Prøv det i dag!