Ofte skal vi udfylde manglende datoer i PostgreSQL ved at udfylde manglende rækker for disse datoværdier. Sådan udfylder du manglende datoer i PostgreSQL ved hjælp af funktionen gener_series.
Sådan udfyldes manglende datoer i PostgreSQL ved hjælp af generate_series
Her er trinene til at udfylde manglende datoer i PostgreSQL. Vi vil bruge gener_series i PostgreSQL til at udfylde manglende værdier.
Lad os sige, at du har følgende tabel salg(ordre_dato,udsalg)
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:Sådan beregnes median i PostgreSQL
Som du kan se i tabellen ovenfor, mangler der datoværdier i den, såsom 2., 3. april osv.
Hvis vi forsøger at plotte disse data på en graf, vil det ligne
Sådan en graf kan være vildledende, da den ikke viser kolonnehuller for manglende datoer.
Bonus Læs:Sådan beregnes glidende gennemsnit i PostgreSQL
For at udfylde manglende data i PostgreSQL skal vi oprette en 'hjælper' datoserietabel, der indeholder alle datoer mellem minimum og maksimum datoer i vores tabel, inklusive manglende datoværdier som rækker. Vi slutter os til dette hjælpebord med vores salg tabel.
Vi vil bruge gener_series i PostgreSQL til at generere datoserietabel. generer_serier funktionen genererer automatisk en fortsættende serie af tal og datoer, hvis du angiver min- og maksværdierne for din serie.
Her er et eksempel, hvor vi fortæller gener_series at generere en datoserie mellem minimum og maksimum datoer i vores tabel, inklusive manglende datoværdier som rækker.
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:Sådan importeres CSV-fil i PostgreSQL
Dernæst laver vi en LEFT join af hjælpetabellen med salg for at udfylde manglende datoer 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 udfyldt manglende datoer i PostgreSQL, kan du bruge et rapporteringsværktøj til at plotte disse data på et søjlediagram eller dashboard og dele dem med dit team. Her er et eksempel på et søjlediagram, der viser daglige salg, oprettet ved hjælp af Ubiq.
Se forskellen i 2 diagrammer!
Hvis du vil oprette diagrammer, dashboards og rapporter fra PostgreSQL-databasen, kan du prøve Ubiq. Vi tilbyder en 14-dages gratis prøveperiode.