Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL :enregistrements insérés par heure, pour les dernières 24 heures

Si vous avez regroupé par HOUR(time) alors vous devez utiliser HOUR(time) dans vos expressions de sélection, et non time . Par exemple :

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

Vous pouvez également regrouper par l'expression que vous souhaitez renvoyer :

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 )

Au cas où vous vous poseriez la question, il est prudent d'appeler NOW() plusieurs fois dans la même requête comme celle-ci. À partir du manuel :