Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Sintaxe para agrupar registros por horário

Olá pessoal!

Tenho uma tabela no MySQL que armazena eventos por horário com a seguinte estrutura:

id / qtd / time

Gostaria de criar uma consulta SQL que retornasse os eventos em grupos por faixa de horário . Por exemplo:

Das 01:00 às 06:00 - 500 itens / Das 07:00 às 12:00 - 800 itens

Pesquisei bastante a esse respeito e acredito que estou bem próximo com o seguinte SQL:

SELECT grupos, SUM(qtd) as quantidade
FROM (
     SELECT( CASE
         WHEN DATE_FORMAT(time, '%H:%i:%s') > '00:00' 
         && DATE_FORMAT(time, '%H:%i:%s') < '06:00' THEN '00h às 06h'
         WHEN DATE_FORMAT(time, '%H:%i:%s') > '06:00' 
         && DATE_FORMAT(time, '%H:%i:%s') < '12:00' THEN '06h às 12h'
         ELSE 0 END)
     as grupos
     FROM tb_events
     ) as acessos
GROUP BY grupos
ORDER BY quantidade;

Porém, não está funcionando e retorna o erro:

Coluna 'num_veh' desconhecida em 'field list'

Alguém sabe como corrigir este problema? Ou então sabe me dizer como eu poderia fazer diferente para encontrar um solução?

Desde já agradeço, Júnior

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
2 respostas

Time é uma palavra reservada para tipo tempo. Você não pode usar ela nesse contexto, tentra trocar para a palavra tempo. Depois mudar faça os testes e vê se isso resolve o problema.

solução!

Uma solução para este problema poderia ser esta:

SELECT SUM(total) as quantidade, (CASE when horario between 0 and 5 then '00h às 06h' when horario between 6 and 11 then '06h às 12h' when horario between 12 and 18 then '12 às 18h' else '18h às 24h' END) as grupos from (
SELECT  CAST(DATE_FORMAT(time, '%H') AS UNSIGNED) as horario, sum(qtd) as total
FROM tb_events
group by DATE_FORMAT(time, '%H')
    ) as tabela
    group by grupos