Vaak moeten we ontbrekende datums in PostgreSQL invullen door ontbrekende rijen voor die datumwaarden in te vullen. Hier leest u hoe u ontbrekende datums in PostgreSQL invult met behulp van de functie create_series.
Ontbrekende datums in PostgreSQL invullen met behulp van generation_series
Hier zijn de stappen om ontbrekende datums in PostgreSQL in te vullen. We zullen Genereer_series in PostgreSQL gebruiken om ontbrekende waarden in te vullen.
Stel dat u de volgende tabel sales(order_date,sale) . heeft
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 lezen:hoe de mediaan te berekenen in PostgreSQL
Zoals je in de bovenstaande tabel kunt zien, ontbreken er datumwaarden zoals 2, 3 april, enz.
Als we proberen deze gegevens in een grafiek te plotten, ziet het er ongeveer zo uit:
Zo'n grafiek kan misleidend zijn omdat er geen kolomhiaten worden weergegeven voor ontbrekende datums.
Bonus lezen:voortschrijdend gemiddelde berekenen in PostgreSQL
Om ontbrekende gegevens in PostgreSQL in te vullen, moeten we een 'helper'-datumreekstabel maken die alle datums tussen minimum- en maximumdatums in onze tabel bevat, inclusief ontbrekende datumwaarden als rijen. We zullen aan deze helpertafel deelnemen met onze verkoop tafel.
We zullen Genereer_series in PostgreSQL gebruiken om een datumreekstabel te genereren. generate_series functie genereert automatisch een doorlopende reeks getallen en datums, als u de min en max waarden voor uw reeks opgeeft.
Hier is een voorbeeld, waarbij we generator_series vertellen om een datumreeks te genereren tussen minimum- en maximumdatums in onze tabel, inclusief ontbrekende datumwaarden als rijen.
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 Lezen:CSV-bestand importeren in PostgreSQL
Vervolgens doen we een LEFT join of helper table met sales om ontbrekende datums in PostgreSQL in te vullen.
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
Nadat u ontbrekende datums in PostgreSQL hebt ingevuld, kunt u een rapportagetool gebruiken om deze gegevens in een staafdiagram of dashboard te plotten en met uw team te delen. Hier is een voorbeeld van een staafdiagram dat de dagelijkse verkoop toont, gemaakt met Ubiq.
Zie het verschil in 2 grafieken!
Als u grafieken, dashboards en rapporten wilt maken vanuit de PostgreSQL-database, kunt u Ubiq proberen. We bieden een gratis proefperiode van 14 dagen aan.