Phần sau sẽ giúp bạn lấy một mẫu bao gồm bất kỳ dữ liệu nào có dấu thời gian tại:00,:05,:10 ...
SELECT time, temp_out FROM wmr200 WHERE date(time) = curdate()
AND mod(minute(time),5) = 0
Tôi đang sử dụng hàm modulo để kiểm tra xem phần phút của thời gian có (0 hoặc) chia hết cho 5.
Nếu bạn chỉ cần một kết quả cho mỗi phân đoạn thời gian, chúng tôi sẽ phải phức tạp hơn một chút.
SELECT concat(date(time),' ',hour(time),':',round(minute(time)/5,0)*5),
min(temp_out), avg(temp_out), max(temp_out)
FROM wmr200
GROUP BY date(time), hour(time), round(minute(time)/5,0)*5
Tôi không có quyền truy cập vào một phiên bản MySQL để kiểm tra nó ngay bây giờ, nhưng đây là ý tưởng. Nó nhóm theo năm phút một lần, nhóm theo ngày, giờ và round(minute(time)/5,0)*5
- làm tròn phút đến 5 gần nhất.
Nó chọn giá trị thời gian mà nó sẽ được nhóm xung quanh và temp_out tối thiểu, trung bình và tối đa, vì tôi không chắc cái nào trong số này sẽ áp dụng tốt nhất cho tình huống của bạn.
Tuy nhiên, nếu DB của bạn không có dữ liệu trong khoảng thời gian năm phút (hoặc khoảng thời gian 30 phút, nếu đó là những gì bạn đang sử dụng), nó vẫn có thể không có dữ liệu cho một điểm mẫu.