毎分データを記録するテーブルがあります。次のようになります。
time_stamp wh
2013-02-01 08:00:00 1700
2013-02-01 08:01:00 1600
2013-02-01 08:02:00 1800
2013-02-01 08:03:00 1700
2013-02-01 08:04:00 1900
2013-02-01 08:05:00 1400
2013-02-01 08:06:00 1500
2013-02-01 08:07:00 1700
2013-02-01 08:08:00 1700
2013-02-01 08:09:00 1800
2013-02-01 08:10:00 1800
2013-02-01 08:11:00 1400
..等
3分ごとのデータを合計して、3分ごとの平均を求めたいです。出力は次のようになります。
time_stamp SUM(wh) AVG(wh)
2013-02-01 08:00:00 5100 1700
2013-02-01 08:03:00 5500 1833.3333
2013-02-01 08:06:00 4900 1633.3333
2013-02-01 08:09:00 5000 1666.6667
簡単に思えますが、望む結果が得られません。これは私が試したSQLクエリです:
SELECT from_unixtime(ROUND(unix_timestamp(time_stamp) /
(60*3)) * 60 * 3) AS rounded_time,
SUM(wh),
AVG(wh)
FROM electrex_0
WHERE time_stamp BETWEEN '2013-02-01 08:00' AND '2013-02-01 09:00'
GROUP BY rounded_time
このSQLコードを使用することで、 time_stamp を正しく取得できましたが、SUM
andでは取得できませんでしたAVG
。たとえばSum(wh)
、2013-02-01 08:03:00 は 5100 で、08:02,08:03,08:04 からのデータを取得して合計します。