MySQL - Retornar soma de valores por intervalo de hora
05/04/2021
0
valor REAL NOT NULL
data DATETIME NOT NULL
Eu quero retornar em MySQL o total de vendas ocorridos no dia atual nos intervalos entre: 0h às 5h, 6h às 11, 12 às 17 e 18h às 23h.
Ficando mais ou menos assim:
HORÁRIO TOTAL DE VENDIDO 0h - 5h 150.00 6h - 11h 230.00 12h - 17h 100.50 18h - 23h 800.00
Dudubacteria
Post mais votado
05/04/2021
select case when left(time(DATA),5) < '06:00' then '00h - 05h' when left(time(DATA),5) < '12:00' then '06h - 11h' when left(time(DATA),5) < '18:00' then '12h - 17h' else '18h - 23h' end HORARIO, sum(VALOR) TOTAL from VENDAS where date(DATA) = curdate() group by case when left(time(DATA),5) < '06:00' then '00h - 05h' when left(time(DATA),5) < '12:00' then '06h - 11h' when left(time(DATA),5) < '18:00' then '12h - 17h' else '18h - 23h' end
Emerson Nascimento
Mais Posts
05/04/2021
Dudubacteria
05/04/2021
Emerson Nascimento
select case when left(time(DATA),5) < '06:00' then '00h - 05h' when left(time(DATA),5) < '12:00' then '06h - 11h' when left(time(DATA),5) < '18:00' then '12h - 17h' else '18h - 23h' end HORARIO, coalesce(sum(VALOR),0) TOTAL from VENDAS where date(DATA) = curdate() group by case when left(time(DATA),5) < '06:00' then '00h - 05h' when left(time(DATA),5) < '12:00' then '06h - 11h' when left(time(DATA),5) < '18:00' then '12h - 17h' else '18h - 23h' end
05/04/2021
Dudubacteria
06/04/2021
Dudubacteria
select case when left(time(DATA),5) < '06:00' then '00h - 05h' when left(time(DATA),5) < '12:00' then '06h - 11h' when left(time(DATA),5) < '18:00' then '12h - 17h' else '18h - 23h' end HORARIO, coalesce(sum(VALOR),0) TOTAL from VENDAS where date(DATA) = curdate() group by case when left(time(DATA),5) < '06:00' then '00h - 05h' when left(time(DATA),5) < '12:00' then '06h - 11h' when left(time(DATA),5) < '18:00' then '12h - 17h' else '18h - 23h' end
Pode me ajudar mais uma vez amigo? Não está retornando zero caso ele não encontre uma venda em determinado turno.
06/04/2021
Matheus
Imagino que sua tabela seja alimentada por venda, se não tem venda na data "A", não tem registro, isso?
Se sim, seu select não retorna mesmo "0,00".
Ja fiz um banco que o time controlava por turno. A diferença é que eu fiz uma tabela de turno diário, e uma tabela de venda. Quando o sistema não identificava movimento em uma certa data, ele criava na tabela de turno um registro para esta data, com isso eu tenho o turno do dia "A" zerado, diferente da tua estrutura em que se não tem venda, não tem registro, correto?
07/04/2021
Dudubacteria
Imagino que sua tabela seja alimentada por venda, se não tem venda na data "A", não tem registro, isso?
Se sim, seu select não retorna mesmo "0,00".
Ja fiz um banco que o time controlava por turno. A diferença é que eu fiz uma tabela de turno diário, e uma tabela de venda. Quando o sistema não identificava movimento em uma certa data, ele criava na tabela de turno um registro para esta data, com isso eu tenho o turno do dia "A" zerado, diferente da tua estrutura em que se não tem venda, não tem registro, correto?
Exatamente amigo! Eu preciso fazer três relatórios: Diário, que retorna todas as vendas por turnos no dia atual e quando não tiver venda em determinado turno, retorne zero. Outro Semanal, que retorna todas vendas do dia atual, até o sexto dia anterior, quando não tiver venda, retorne zero para aquele dia. E um Mensal, que retorna todas vendas dos meses e quando não tiver venda em determinado mês, retorne zero no valor.
Clique aqui para fazer login e interagir na Comunidade :)