Berikut ini akan memberi Anda sampel yang terdiri dari data apa pun dengan stempel waktu di :00, :05, :10 ...
SELECT time, temp_out FROM wmr200 WHERE date(time) = curdate()
AND mod(minute(time),5) = 0
Saya menggunakan fungsi modulo untuk memeriksa apakah bagian menit dari waktu (0 atau) habis dibagi 5.
Jika Anda hanya membutuhkan satu hasil untuk setiap segmen waktu, kita harus mendapatkan hasil yang sedikit lebih rumit.
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
Saya tidak memiliki akses ke instance MySQL untuk mengujinya sekarang, tetapi inilah idenya. Ini mengelompokkan setiap lima menit, dengan mengelompokkan berdasarkan tanggal, jam, dan round(minute(time)/5,0)*5
- yang membulatkan menit ke 5 terdekat.
Ini memilih nilai waktu yang harus dikelompokkan, dan min, avg, dan max temp_out, karena saya tidak yakin mana yang paling sesuai untuk situasi Anda.
Namun, jika DB Anda tidak memiliki data untuk rentang lima menit (atau rentang 30 menit, jika itu yang Anda gunakan), DB mungkin masih belum memiliki data untuk titik sampel.