Muitas vezes, precisamos preencher datas ausentes no PostgreSQL preenchendo linhas ausentes para esses valores de data. Veja como preencher datas ausentes no PostgreSQL usando a função generate_series.
Como preencher datas ausentes no PostgreSQL usando generate_series
Aqui estão os passos para preencher datas faltantes no PostgreSQL. Usaremos generate_series no PostgreSQL para preencher os valores ausentes.
Digamos que você tenha a seguinte tabela vendas(data_pedido,venda)
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 | +------------+------+
Bônus de leitura:Como calcular a mediana no PostgreSQL
Como você pode ver na tabela acima, há valores de data ausentes, como 2, 3 de abril, etc.
Se tentarmos plotar esses dados em um gráfico, será algo como
Esse gráfico pode ser enganoso, pois não mostra lacunas de coluna para datas ausentes.
Bônus de leitura:Como calcular a média móvel no PostgreSQL
Para preencher dados ausentes no PostgreSQL, precisamos criar uma tabela de série de datas 'auxiliar' que contenha todas as datas entre as datas mínimas e máximas em nossa tabela, incluindo valores de datas ausentes como linhas. Juntaremos esta mesa auxiliar com nossas vendas tabela.
Usaremos generate_series no PostgreSQL para gerar a tabela de séries de datas. generate_series A função gera automaticamente uma série contínua de números e datas, se você fornecer os valores mínimo e máximo para sua série.
Aqui está um exemplo, onde dizemos a generate_series para gerar uma série de datas entre as datas mínimas e máximas em nossa tabela, incluindo valores de data ausentes como linhas.
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
Bônus de leitura:Como importar arquivo CSV no PostgreSQL
Em seguida, fazemos uma junção LEFT da tabela auxiliar com vendas para preencher datas faltantes no 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
Depois de preencher as datas faltantes no PostgreSQL, você pode usar uma ferramenta de relatório para plotar esses dados em um gráfico de barras ou painel e compartilhá-los com sua equipe. Aqui está um exemplo de um gráfico de barras que mostra as vendas diárias, criado usando o Ubiq.
Veja a diferença em 2 gráficos!
Se você deseja criar gráficos, painéis e relatórios do banco de dados PostgreSQL, experimente o Ubiq. Oferecemos um teste gratuito de 14 dias.