PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So erhalten Sie die letzte Zeile pro Gruppe in PostgreSQL

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!