Nếu bạn nhóm theo HOUR(time)
thì bạn nên sử dụng HOUR(time)
trong các biểu thức đã chọn của bạn, chứ không phải time
. Ví dụ:
SELECT HOUR(time), COUNT(*)
FROM `records`
WHERE time > DATE_SUB(NOW(), INTERVAL 24 HOUR)
GROUP BY HOUR(time)
ORDER BY HOUR(time)
Ngoài ra, bạn có thể nhóm theo biểu thức bạn muốn trả về:
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 )
Trong trường hợp bạn băn khoăn, có thể an toàn gọi NOW()
nhiều lần trong cùng một truy vấn như thế này. Từ hướng dẫn sử dụng
: