mysql每五分钟取一次数据_mysql – 给定时间内每5分钟的平均数据
分組到間隔
您應(yīng)該使用group by為每個(gè)要平均的時(shí)間間隔創(chuàng)建一個(gè)組.
select avg(Column), convert((min(datetime) div 500)*500 + 230, datetime) as time
from Databasename.tablename
where datetime BETWEEN '2012-09-08 00:00:00' AND '2012-09-08 15:30:00'
group by datetime div 500
這利用了一個(gè)事實(shí),即日期和時(shí)間可以隱含地轉(zhuǎn)換為數(shù)字,然后格式為YYMMDDhhmmss.將這樣的數(shù)字除以100會(huì)剝離秒數(shù),并且類似地除以500會(huì)產(chǎn)生每5分鐘間隔的唯一數(shù)字.
我選擇的附加列將給出間隔的中間:從間隔的任何時(shí)間(這里選擇最小值,但實(shí)際上并不重要),變成5分鐘的間隔號(hào),回到日期和時(shí)間數(shù)字,然后加兩分半鐘.您可以使用類似的語法來計(jì)算間隔的開頭(簡單地保留230)或(包含)結(jié)束(459).
范圍處理結(jié)束
請(qǐng)注意,您的BETWEEN范圍將包括15:30:00之間的行,但此時(shí)間隔開始時(shí)沒有其他行.也許您想從您的選擇中排除范圍的結(jié)尾:
where datetime >= '2012-09-08 00:00:00' AND datetime < '2012-09-08 15:30:00'
為什么你得到NULL
至于為什么你的查詢產(chǎn)生NULL:要進(jìn)行區(qū)間運(yùn)算,你不要將整個(gè)區(qū)間事物用引號(hào)括起來,并且你使用奇異名稱作為時(shí)間單位.即
'2012-09-08 15:30:00' + INTERVAL 5 minute
但這只是將范圍擴(kuò)展到2012-09-08 15:35:00,仍然沒有創(chuàng)建你想要的5分鐘間隔.你編寫它的方式,你試圖添加兩個(gè)字符串,這在MySQL中是不可能的,除非字符串可以轉(zhuǎn)換為數(shù)字,在這種情況下將添加這些數(shù)字.
您可能希望使用區(qū)間運(yùn)算來計(jì)算區(qū)間的獨(dú)占結(jié)束,即區(qū)間后的第一秒:
convert((min(datetime) div 500)*500, datetime) + INTERVAL 5 minute as endOfInterval
簡單地添加500而不是我的查詢的230將不起作用,因?yàn)榻Y(jié)果數(shù)字可能表示每小時(shí)的最后一個(gè)間隔的無效日期.
總結(jié)
以上是生活随笔為你收集整理的mysql每五分钟取一次数据_mysql – 给定时间内每5分钟的平均数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Excel制作选择题试卷,Python快
- 下一篇: 5G和边缘计算如何赋能安防行业