Ofta måste vi fylla i saknade datum i PostgreSQL genom att fylla i saknade rader för dessa datumvärden. Så här fyller du i saknade datum i PostgreSQL med funktionen generera_serier.
Så här fyller du i saknade datum i PostgreSQL med generation_series
Här är stegen för att fylla i saknade datum i PostgreSQL. Vi kommer att använda gener_series i PostgreSQL för att fylla i saknade värden.
Låt oss säga att du har följande tabell försäljning(orderdatum, rea)
postgresql=# create table sales(order_date date,sale int); postgresql=# insert into sales(order_date,sale) values('2020-04-01',212), ('2020-04-04',220), ('2020-04-05',120), ('2020-04-07',200), ('2020-04-08',222), ('2020-04-10',312), ('2020-04-11',225), ('2020-04-12',212); postgresql=# select * from sales; +------------+------+ | order_date | sale | +------------+------+ | 2020-04-01 | 212 | | 2020-04-04 | 220 | | 2020-04-05 | 120 | | 2020-04-07 | 200 | | 2020-04-08 | 222 | | 2020-04-10 | 312 | | 2020-04-11 | 225 | | 2020-04-12 | 212 | +------------+------+
Bonus Läs:Hur man beräknar median i PostgreSQL
Som du kan se i tabellen ovan saknas det datumvärden i den som 2, 3 april, etc.
Om vi försöker plotta dessa data på en graf kommer det att se ut ungefär som
En sådan graf kan vara missvisande eftersom den inte visar kolumnluckor för saknade datum.
Bonus Läs:Hur man beräknar glidande medelvärde i PostgreSQL
För att fylla i saknad data i PostgreSQL måste vi skapa en "hjälpar" datumserietabell som innehåller alla datum mellan lägsta och högsta datum i vår tabell, inklusive saknade datumvärden som rader. Vi kommer att gå med i det här hjälpbordet med vår försäljning bord.
Vi kommer att använda gener_series i PostgreSQL för att generera datumserietabell. generera_serier funktionen genererar automatiskt en kontinuerlig serie med siffror och datum, om du anger min- och maxvärden för din serie.
Här är ett exempel där vi säger till gener_series att generera en datumserie mellan lägsta och högsta datum i vår tabell, inklusive saknade datumvärden som rader.
postgres=# SELECT generate_series(min(order_date), max(order_date), '1d')::date AS order_date FROM sales; order_date ------------ 2020-04-01 2020-04-02 2020-04-03 2020-04-04 2020-04-05 2020-04-06 2020-04-07 2020-04-08 2020-04-09 2020-04-10 2020-04-11 2020-04-12
Bonus Läs:Hur man importerar CSV-fil i PostgreSQL
Därefter gör vi en VÄNSTER koppling av hjälptabell med försäljning för att fylla i saknade datum i PostgreSQL.
postgres=# SELECT x.order_date, t.sale FROM ( SELECT generate_series(min(order_date), max(order_date), '1d')::date AS order_date FROM sales ) x LEFT JOIN sales t USING (order_date) ORDER BY x.order_date; order_date | sale ------------+------ 2020-04-01 | 212 2020-04-02 | 2020-04-03 | 2020-04-04 | 220 2020-04-05 | 120 2020-04-06 | 2020-04-07 | 200 2020-04-08 | 222 2020-04-09 | 2020-04-10 | 312 2020-04-11 | 225 2020-04-12 | 212
När du har fyllt i saknade datum i PostgreSQL kan du använda ett rapporteringsverktyg för att plotta denna data på ett stapeldiagram eller instrumentpanel och dela den med ditt team. Här är ett exempel på ett stapeldiagram som visar daglig försäljning, skapad med Ubiq.
Se skillnaden i 2 diagram!
Om du vill skapa diagram, instrumentpaneler och rapporter från PostgreSQL-databasen kan du prova Ubiq. Vi erbjuder en 14-dagars gratis provperiod.