Como Agrupar os Dados por Semana no SQL

Agora que já mostramos como agrupar os dados por um determinado grupo utilizando o group by, vamos ver como fazer um agrupamento para mostrar os dados semana a semana.

Como de costume, criaremos uma tabela para trabalhar o exemplo. Dessa vez, você trabalha em um call center e possui uma tabela contendo o número de ligações recebidas em cada dia:

-- cria os campos da tabela
CREATE TABLE base_ligacoes (
Qtd_Ligacoes varchar(50),
Data_Ligacao date
);

-- insere valores na tabela
INSERT INTO base_ligacoes
VALUES
(150, '2018-01-22'),
(100, '2018-01-24'),
(50, '2018-01-26'),
(250, '2018-01-27'),
(350, '2018-01-28'),
(50, '2018-01-29'),
(200, '2018-01-30'),
(210, '2018-02-01'),
(80, '2018-02-02'),
(75, '2018-02-03'),
(105, '2018-02-04'),
(222, '2018-02-05');

-- exibe todos elementos de base_ligacoes
select * from base_ligacoes;

Agora, você sabe como obter um resumo das ligações por semana? Uma média talvez ou então a soma do total de ligações semana a semana?

Para fazer isso, se você estiver utilizando o SQLite, você pode utilizar mais uma vez o strftime(), dessa vez com o argumento “%w”, indicador de que você quer a semana. Você ainda pode combinar o max() com date(), obtendo o primeiro e o último dia da semana (apenas para facilitar a leitura):

select strftime("%w", Data_Ligacao),
    max(date(Data_Ligacao, 'weekday 0', '-7 day')) Inicio_Semana,
    max(date(Data_Ligacao, 'weekday 0', '-1 day')) Fim_Semana,
    sum(qtd_ligacoes) as Total_Ligacoes,
    avg(qtd_ligacoes) as Media_Ligacoes
from base_ligacoes
group by 1
order by 2;

Se você não estiver utilizando o SQL, pode ser mais fácil utilizar a função week() que já te retorna o primeiro dia da semana do agrupamento (que é uma segunda-feira). Ficaria algo como:

select WEEK(Data_Ligacao)::DATE AS Week,
    SUM(Qtd_Ligacoes) AS Total_ligacoes,
    AVG(Qtd_Ligacoes::FLOAT) AS Media_Ligacoes
FROM base_compras
group by 1
order by 1;

Curtiu o post? Então não deixe de comentar, dar um feedback, isso é muito importante. Também não deixe de visitar as outras seções do blog e aprender mais sobre ciência de dados. Além disso, você pode me acompanhar no Twitter @EstatSite ou em outras redes – dê uma passadinha no Sobre o Estatsite / Contato.

Forte abraço e bons estudos!

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *