sql >> Base de Datos >  >> RDS >> Mysql

MySQL:registros insertados por hora, durante las últimas 24 horas

Si agrupó por HOUR(time) entonces deberías usar HOUR(time) en sus expresiones seleccionadas, y no en time . Por ejemplo:

SELECT HOUR(time), COUNT(*)
FROM `records`
WHERE time > DATE_SUB(NOW(), INTERVAL 24 HOUR)
GROUP BY HOUR(time)
ORDER BY HOUR(time)

Alternativamente, puede agrupar por la expresión que desea devolver:

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 )

En caso de que se lo pregunte, es seguro llamar a NOW() varias veces en la misma consulta como esta. Del manual :