Jika Anda mengelompokkan berdasarkan HOUR(time)
maka Anda harus menggunakan HOUR(time)
dalam ekspresi pilihan Anda, dan bukan time
. Misalnya:
SELECT HOUR(time), COUNT(*)
FROM `records`
WHERE time > DATE_SUB(NOW(), INTERVAL 24 HOUR)
GROUP BY HOUR(time)
ORDER BY HOUR(time)
Atau Anda dapat mengelompokkan menurut ekspresi yang ingin Anda kembalikan:
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 )
Jika Anda bertanya-tanya, aman untuk memanggil NOW()
beberapa kali dalam kueri yang sama seperti ini. Dari manual
: