Spesso, abbiamo bisogno di riempire le date mancanti in PostgreSQL riempiendo le righe mancanti per quei valori di data. Ecco come inserire le date mancanti in PostgreSQL usando la funzione generate_series.
Come riempire le date mancanti in PostgreSQL usando generate_series
Ecco i passaggi per riempire le date mancanti in PostgreSQL. Useremo generate_series in PostgreSQL per riempire i valori mancanti.
Supponiamo che tu abbia la seguente tabella sales(order_date,sale)
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 Leggi:Come calcolare la mediana in PostgreSQL
Come puoi vedere nella tabella sopra, ci sono valori di data mancanti come 2, 3 aprile, ecc.
Se proviamo a tracciare questi dati su un grafico, assomiglierà a

Tale grafico può essere fuorviante in quanto non mostra spazi vuoti nelle colonne per le date mancanti.
Bonus Leggi:Come calcolare la media mobile in PostgreSQL
Per riempire i dati mancanti in PostgreSQL, dobbiamo creare una tabella di serie di date "helper" che contenga tutte le date comprese tra le date minime e massime nella nostra tabella, inclusi i valori di data mancanti come righe. Ci uniremo a questo tavolo di supporto con le nostre vendite tabella.
Useremo generate_series in PostgreSQL per generare la tabella delle serie di date. genera_serie la funzione genera automaticamente una serie continua di numeri e date, se fornisci i valori minimo e massimo per la tua serie.
Ecco un esempio, in cui diciamo a generate_series di generare una serie di date tra le date minime e massime nella nostra tabella, inclusi i valori di data mancanti come righe.
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 Lettura:come importare file CSV in PostgreSQL
Successivamente, eseguiamo un join SINISTRO della tabella helper con vendite per riempire le date mancanti in 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
Dopo aver compilato le date mancanti in PostgreSQL, puoi utilizzare uno strumento di reporting per tracciare questi dati su un grafico a barre o dashboard e condividerli con il tuo team. Ecco un esempio di grafico a barre che mostra le vendite giornaliere, creato utilizzando Ubiq.

Vedi la differenza in 2 grafici!
Se vuoi creare grafici, dashboard e report dal database PostgreSQL, puoi provare Ubiq. Offriamo una prova gratuita di 14 giorni.