Ibland kan du behöva få sista raden i tabellen eller få sista raden per grupp i PostgreSQL. Så här får du sista posten per grupp i PostgreSQL.
Hämta sista raden i tabellen
Låt oss säga att du har följande PostgreSQL-tabell.
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 Skapa funktion
Här är frågan för att få sista raden i tabellen, beroende på hur dina rader är sorterade. I exemplet ovan, eftersom våra poster läggs till efter tidsstämpel, väljer vi raden med senaste tidsstämpel.
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 frågan ovan sorterar vi raderna i fallande ordning efter tidsstämpel och väljer den översta raden med hjälp av LIMIT-satsen.
Bonus Läs:PostgreSQL Skapa Schema
Få senaste posten per grupp
Här är SQL-frågan för att få sista raden per grupp, det vill säga varje 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 ovanstående fråga sorterar vi först raderna efter produkt (stigande) och order_date (nedåtgående). Sedan använder vi DISTINCT ON-satsen för att bara välja den översta posten per grupp, vilket inte är något annat än den sista posten per grupp.
Bonus Läs:Hur man skapar histogram i PostgreSQL
Förhoppningsvis kan du nu enkelt få den sista raden per grupp i PostgreSQL.
Ubiq gör det enkelt att visualisera data på några minuter och övervaka i realtidsinstrumentpaneler. Prova det idag!