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!