Manchmal müssen Sie möglicherweise die letzte Tabellenzeile oder die letzte Zeile pro Gruppe in PostgreSQL abrufen. So erhalten Sie den letzten Datensatz pro Gruppe in PostgreSQL.
Letzte Zeile der Tabelle abrufen
Angenommen, Sie haben die folgende PostgreSQL-Tabelle.
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-Lesezugriff:PostgreSQL-Erstellungsfunktion
Hier ist die Abfrage, um die letzte Zeile der Tabelle abzurufen, je nachdem, wie Ihre Zeilen sortiert sind. Da unsere Datensätze im obigen Beispiel nach Zeitstempel hinzugefügt werden, wählen wir die Zeile mit dem neuesten Zeitstempel aus.
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 der obigen Abfrage sortieren wir die Zeilen in absteigender Reihenfolge des Zeitstempels und wählen die erste Zeile mit der LIMIT-Klausel aus.
Bonuslektüre:PostgreSQL-Schema erstellen
Letzten Datensatz pro Gruppe erhalten
Hier ist die SQL-Abfrage, um die letzte Zeile pro Gruppe, also jedes Produkt, abzurufen.
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 der obigen Abfrage sortieren wir zuerst die Zeilen nach Produkt (aufsteigend) und Bestelldatum (absteigend). Dann verwenden wir die DISTINCT ON-Klausel, um nur den obersten Datensatz pro Gruppe auszuwählen, der nichts anderes als der letzte Datensatz pro Gruppe ist.
Bonuslektüre:So erstellen Sie ein Histogramm in PostgreSQL
Hoffentlich können Sie jetzt problemlos die letzte Zeile pro Gruppe in PostgreSQL abrufen.
Ubiq macht es einfach, Daten innerhalb von Minuten zu visualisieren und in Echtzeit-Dashboards zu überwachen. Probieren Sie es noch heute aus!