Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

toreti

Selecionar todos os dias do mês e quantidade de vendas

Recommended Posts

Olá pessoal, estou criando um sistema para gerenciar vendas de veículos e criando gráficos a partir dos resultados.

Mas num deles me surgiu uma dúvida, para entender o problema vamos supor o seguinte cenário de vendas:

 

4 carros vendidos no dia 5

2 carros vendidos no dia 13

3 carros vendidos no dia 16

 

Para resgatar a quantidade de veículos vendidos por dia eu estou usando esta lógica:

SELECT DAY(data_venda) dia, COUNT(id) qtd FROM venda GROUP BY dia

 

O resultado disso daria 3 linhas mostrando os dias que tiveram vendas e sua quantidade.

Mas eu gostaria que aparecesse todos os dias do mês e sua quantidade de vendas.

 

Existe como fazer isto em MySql?

 

Abraços, Felipe Toreti.

Compartilhar este post


Link para o post
Compartilhar em outros sites
SELECT DAY(data_venda) dia, COUNT(id) qtd 
FROM venda 
where year(data_venda) = 2012
and   month(data_venda) = 4
GROUP BY dia

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT DAY(data_venda) dia, COUNT(id) qtd 
FROM venda 
where year(data_venda) = 2012
and   month(data_venda) = 4
GROUP BY dia

 

Obrigado pela atenção, mas o resultado seria o mesmo:

 

dia - qtd

5 - 4

12 - 2

16 - 3

 

Eu gostaria de saber se existe como retornar neste formato:

 

dia - qtd

1 - 0

2 - 0

3 - 0

4 - 0

5 - 4

...

 

Porque desta forma eu conseguiria montar melhor os gráficos de linha.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Teria uma gambiarra

 

select dia,sum(qtd) qtd
from
(
SELECT DAY(data_venda) dia, COUNT(id) qtd 
FROM venda 
where year(data_venda) = 2012
and   month(data_venda) = 4
GROUP BY dia
union all
SELECT @rownum:=@rownum+1 AS dia, 0 qtd
FROM venda
limit 30
) virtual
group by dia

 

Não estou certo da sintaxe MySql mas a ideia da query de baixo

é gerar uma sequencia de 1 a 30 que garanta que o di apareça no resultado.

No Oracle se usa o rownum, em MySql talvez exista uma forma melhor.

Outra coisa seria tratar o meses de 28,29,30 e 31 dias.

 

Mas a ideia básica da gambiarra é esta.

 

Fonte

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela ajuda, mas não consegui utilizando somente SQL ):

Mas sem problemas, eu apenas queria ver se existia uma maneira de fazer isto diretamente no banco.

 

Eu resolvi meu problema tratando no PHP, onde criei um array com um registro para cada dia do mês e com a quantidade de vendas zeradas, depois atualizo os registros deste array referentes aos dias retornadas da consulta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.