Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL:Registros inseridos por hora, nas últimas 24 horas


Se você agrupou por HOUR(time) então você deve usar HOUR(time) em suas expressões selecionadas, e não em time . Por exemplo:
SELECT HOUR(time), COUNT(*)
FROM `records`
WHERE time > DATE_SUB(NOW(), INTERVAL 24 HOUR)
GROUP BY HOUR(time)
ORDER BY HOUR(time)

Alternativamente, você pode agrupar pela expressão que deseja retornar:
SELECT COUNT(*), FLOOR( TIME_TO_SEC( TIMEDIFF( NOW(), time)) / 3600 )
FROM `records`
WHERE time > DATE_SUB(NOW(), INTERVAL 24 HOUR)
GROUP BY FLOOR( TIME_TO_SEC( TIMEDIFF( NOW(), time)) / 3600 )
ORDER BY FLOOR( TIME_TO_SEC( TIMEDIFF( NOW(), time)) / 3600 )

Caso você esteja se perguntando, é seguro chamar NOW() várias vezes na mesma consulta como esta. Do manual :