Ако сте групирали по HOUR(time)
тогава трябва да използвате HOUR(time)
във вашите избрани изрази, а не time
. Например:
SELECT HOUR(time), COUNT(*)
FROM `records`
WHERE time > DATE_SUB(NOW(), INTERVAL 24 HOUR)
GROUP BY HOUR(time)
ORDER BY HOUR(time)
Като алтернатива можете да групирате по израза, който искате да върнете:
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 )
В случай, че се чудите, безопасно е да извикате NOW()
няколко пъти в една и съща заявка като тази. От ръководството
: