Někdy může být potřeba získat poslední řádek tabulky nebo získat poslední řádek na skupinu v PostgreSQL. Zde je návod, jak získat poslední záznam na skupinu v PostgreSQL.
Získat poslední řádek tabulky
Řekněme, že máte následující tabulku 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
Bonusové čtení:Funkce vytvoření PostgreSQL
Zde je dotaz na získání posledního řádku tabulky v závislosti na tom, jak jsou vaše řádky seřazeny. Ve výše uvedeném příkladu, protože jsou naše záznamy přidávány podle časového razítka, vybereme řádek s nejnovějším časovým razítkem.
postgres=# select * from product_sales order by order_date desc limit 1; product | order_date | sale ---------+---------------------+------ C | 2020-05-03 09:50:00 | 1850
Ve výše uvedeném dotazu seřadíme řádky v sestupném pořadí podle časového razítka a vybereme první řádek pomocí klauzule LIMIT.
Bonusové čtení:Vytvořte schéma PostgreSQL
Získat poslední záznam na skupinu
Zde je dotaz SQL pro získání posledního řádku na skupinu, tedy každý produkt.
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
Ve výše uvedeném dotazu nejprve seřadíme řádky podle produktu (vzestupně) a datum_objednávky (klesající). Potom použijeme klauzuli DISTINCT ON k výběru pouze nejvyššího záznamu na skupinu, což není nic jiného než poslední záznam na skupinu.
Bonusové čtení:Jak vytvořit histogram v PostgreSQL
Doufejme, že nyní můžete snadno získat poslední řádek na skupinu v PostgreSQL.
Ubiq usnadňuje vizualizaci dat během několika minut a sledování na řídicích panelech v reálném čase. Vyzkoušejte to ještě dnes!