sql >> Databáze >  >> RDS >> PostgreSQL

Jak vyplnit chybějící data v PostgreSQL pomocí create_series

Často potřebujeme doplnit chybějící data v PostgreSQL vyplněním chybějících řádků pro tyto hodnoty data. Zde je návod, jak vyplnit chybějící data v PostgreSQL pomocí funkce create_series.

Jak vyplnit chybějící data v PostgreSQL pomocí create_series

Zde jsou kroky k vyplnění chybějících dat v PostgreSQL. K doplnění chybějících hodnot použijeme create_series v PostgreSQL.

Řekněme, že máte následující tabulku prodej(datum_objednávky,výprodej)

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 |
+------------+------+

Bonusové čtení:Jak vypočítat medián v PostgreSQL

Jak můžete vidět v tabulce výše, chybí v ní hodnoty data, jako je 2., 3. duben atd.

Pokud se pokusíme vykreslit tato data do grafu, bude to vypadat nějak takto

Takový graf může být zavádějící, protože nezobrazuje mezery ve sloupcích pro chybějící data.

Bonusové čtení:Jak vypočítat klouzavý průměr v PostgreSQL

Abychom doplnili chybějící data v PostgreSQL, musíme vytvořit ‚pomocnou‘ tabulku datových řad, která obsahuje všechna data mezi minimálním a maximálním datem v naší tabulce, včetně chybějících hodnot data jako řádků. Připojíme se k této pomocné tabulce s našimi prodeji tabulka.

Ke generování tabulky datových řad použijeme v PostgreSQL create_series. generate_series Funkce automaticky generuje pokračující řadu čísel a dat, pokud zadáte minimální a maximální hodnoty pro vaši řadu.

Zde je příklad, kdy říkáme generation_series, aby vygenerovala datovou řadu mezi minimálním a maximálním datem v naší tabulce, včetně chybějících hodnot data jako řádků.

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

Bonusové čtení:Jak importovat soubor CSV v PostgreSQL

Dále provedeme LEVÉ spojení pomocné tabulky s prodejem k doplnění chybějících dat v 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

Poté, co vyplníte chybějící data v PostgreSQL, můžete pomocí nástroje pro vytváření sestav vykreslit tato data na sloupcový graf nebo řídicí panel a sdílet je se svým týmem. Zde je příklad sloupcového grafu, který ukazuje denní tržby, vytvořený pomocí Ubiq.

Podívejte se na rozdíl ve 2 grafech!

Pokud chcete vytvářet grafy, dashboardy a sestavy z databáze PostgreSQL, můžete zkusit Ubiq. Nabízíme 14denní bezplatnou zkušební verzi.

  1. Oracle:PŘI AKTUALIZACI DUPLIKÁTNÍHO KLÍČE

  2. Jak mám importovat data z CSV do tabulky Postgres pomocí pgAdmin 3?

  3. Odstranění duplicitních hodnot na základě pouze jednoho sloupce tabulky

  4. Jak aktualizovat statistiky serveru SQL pro velké tabulky