A volte potrebbe essere necessario ottenere l'ultima riga della tabella o l'ultima riga per gruppo in PostgreSQL. Ecco come ottenere l'ultimo record per gruppo in PostgreSQL.
Ottieni l'ultima riga della tabella
Supponiamo che tu abbia la seguente tabella PostgreSQL.
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 Lettura:funzione di creazione di PostgreSQL
Ecco la query per ottenere l'ultima riga della tabella, a seconda di come sono ordinate le righe. Nell'esempio precedente, poiché i nostri record vengono aggiunti in base al timestamp, selezioniamo la riga con il timestamp più recente.
postgres=# select * from product_sales
order by order_date desc
limit 1;
product | order_date | sale
---------+---------------------+------
C | 2020-05-03 09:50:00 | 1850
Nella query precedente, ordiniamo le righe in ordine decrescente di timestamp e selezioniamo la prima riga utilizzando la clausola LIMIT.
Bonus Lettura:PostgreSQL Crea Schema
Ottieni l'ultimo record per gruppo
Ecco la query SQL per ottenere l'ultima riga per gruppo, ovvero ogni prodotto.
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
Nella query precedente, prima ordiniamo le righe per prodotto (crescente) e data_ordine (discendente). Quindi utilizziamo la clausola DISTINCT ON per selezionare solo il record superiore per gruppo, che non è altro che l'ultimo record per gruppo.
Bonus Leggi:Come creare istogramma in PostgreSQL
Si spera che ora tu possa facilmente ottenere l'ultima riga per gruppo in PostgreSQL.
Ubiq semplifica la visualizzazione dei dati in pochi minuti e il monitoraggio in dashboard in tempo reale. Provalo oggi!