Soms moet u de laatste rij van de tabel of de laatste rij per groep in PostgreSQL krijgen. Hier leest u hoe u het laatste record per groep in PostgreSQL kunt krijgen.
Laatste rij van tabel ophalen
Stel dat u de volgende PostgreSQL-tabel heeft.
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 lezen:PostgreSQL-aanmaakfunctie
Dit is de vraag om de laatste rij van de tabel te krijgen, afhankelijk van hoe uw rijen zijn gesorteerd. In het bovenstaande voorbeeld, aangezien onze records worden toegevoegd op tijdstempel, selecteren we de rij met de laatste tijdstempel.
postgres=# select * from product_sales order by order_date desc limit 1; product | order_date | sale ---------+---------------------+------ C | 2020-05-03 09:50:00 | 1850
In de bovenstaande zoekopdracht sorteren we de rijen in aflopende volgorde van tijdstempel en selecteren we de bovenste 1 rij met behulp van de LIMIT-clausule.
Bonus Lezen:PostgreSQL Schema maken
Laatste record per groep ophalen
Hier is de SQL-query om de laatste rij per groep te krijgen, dat wil zeggen elk product.
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
In de bovenstaande zoekopdracht sorteren we eerst de rijen op product (oplopend) en order_date (aflopend). Vervolgens gebruiken we de clausule DISTINCT ON om alleen het bovenste record per groep te selecteren, wat niets anders is dan het laatste record per groep.
Bonus Lezen:Histogram maken in PostgreSQL
Hopelijk kun je nu gemakkelijk de laatste rij per groep in PostgreSQL krijgen.
Ubiq maakt het gemakkelijk om gegevens binnen enkele minuten te visualiseren en in realtime dashboards te controleren. Probeer het vandaag nog!