Pokud jste seskupili podle HOUR(time)
pak byste měli použít HOUR(time)
ve vybraných výrazech, nikoli time
. Například:
SELECT HOUR(time), COUNT(*)
FROM `records`
WHERE time > DATE_SUB(NOW(), INTERVAL 24 HOUR)
GROUP BY HOUR(time)
ORDER BY HOUR(time)
Případně můžete seskupit podle výrazu, který chcete vrátit:
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 )
V případě, že by vás to zajímalo, je bezpečné zavolat NOW()
vícekrát ve stejném dotazu, jako je tento. Z příručky
: