$query= SELECT channel1, channel2, channel3
FROM `Table`
WHERE `id` =1
AND `dateTime` >= '2011-10-15 00:00:01'
AND `dateTime` <= '2011-10-17 23:59:59'
根據以上查詢,如何獲取每2小時通道1,通道2,通道3列的平均值?如何在sql查詢中每2小時獲取平均值?
$query= SELECT channel1, channel2, channel3
FROM `Table`
WHERE `id` =1
AND `dateTime` >= '2011-10-15 00:00:01'
AND `dateTime` <= '2011-10-17 23:59:59'
根據以上查詢,如何獲取每2小時通道1,通道2,通道3列的平均值?如何在sql查詢中每2小時獲取平均值?
這裏是一個TSQL的解決方案:
SELECT avg(channel1) channel 1, avg(channel2) channel2, avg(channel3) channel3,
dateadd(hour, datediff(hour, 0,datetime)/2*2,0) FROM Table
WHERE id =1 AND
dateTime >= '2011-10-15 00:00:01' AND
dateTime <= '2011-10-17 23:59:59'
group by datediff(hour, 0,datetime)/2*2
謝謝@ t-clausen.dk。是SQL服務器的查詢?我用的是mysql V5.1.35,有一些語法錯誤。 – Acubi
是的,我製作的腳本是用於sql server(tsql) –
假設MySQL的:
SELECT date(`dateTime`) dateDay, 2*floor(date_format(`dateTime`,'%H')/2) dateHour,
avg(channel1), avg(channel2), avg(channel3)
FROM `Table`
WHERE `id` =1
AND `dateTime` >= '2011-10-15 00:00:01'
AND `dateTime` <= '2011-10-17 23:59:59'
group by date(`dateTime`), 2*floor(date_format(`dateTime`,'%H')/2)
這個查詢的關鍵是組記錄每兩小時。
考慮:
樓=返回的最大整數值大於一個數量等於或小於函數(發現你的數據庫一個類似)在
time_hh =您的日期時間列的「 hhmmm」的格式,我的意思是,從‘0000’到'23:59'
(使用你的數據庫功能格式化時間字段)的查詢是:
SELECT
floor(time_hh/200),
min(datetime),
max(datetime),
avg(channel1),
avg(channel2),
avg(channel3)
FROM
`table`
GROUP BY
floor(time_hh/200)
其數據庫中的d版本? –