bạn có thể giải quyết vấn đề này bằng cách tạo một bảng chứa 24 giá trị cho hàng giờ (00:00, 01:00, v.v.) và thực hiện kết hợp trái (hoặc phải) với nó và bảng của bạn cho phép giá trị rỗng, do đó bạn sẽ có tất cả 24 hàng ngay cả khi bảng của bạn hoàn toàn chứa 0 hàng, sau đó nhóm theo sẽ hoạt động tốt.
Đừng quên cắt ngắn mọi thứ trừ hàng giờ kể từ bảng của bạn khi bạn thực hiện tham gia để kết quả của func bạn gọi và thực hiện join on
có thể bằng giá trị của bảng trợ giúp này.
bạn có thể sử dụng truy vấn sau để thực hiện công việc sau khi điền vào bảng testtime với 24 giá trị test_time
select test_time,sum(sign(coalesce(idFromYourTable,0))) as count from testtime
left join yourTable on test_time=hour(yourTableTime)
group by test_time
Điều này sẽ cung cấp số 0 là số đếm nếu không có giá trị nào khớp với hàng từ bảng kiểm tra, trong khi có số đếm (*) sẽ cung cấp 24 hàng có 1s thay vì 0 ngay cả khi bảng của bạn trống, cũng như nếu chỉ có 1 hàng trong bảng của bạn. Không thể phân biệt sự khác biệt giữa 0 hàng vì kết quả sẽ giống nhau khi theo sau 2 hàng khác nhau
nguyên nhân sẽ cung cấp cùng một số lượng hàng kết quả bằng 1, trong khi kỹ thuật tính tổng xử lý các hàng này khác nhau