我想从MySQL专栏计算12个月的移动平均线.数据代表时间序列功率测量,它是一个较大的数据集(几年内每10分钟一次).一个高性能的查询会很好,但速度是我以后可以解决的问题.
DTE Active
2012-1-3 00:10 500
2012-1-3 00:20 520
... etc
以下查询为我提供了每月的活动总数:
SELECT YEAR(DTE) AS year, MONTH(DTE) AS month, SUM(Active)/6 as total FROM saturne s GROUP BY YEAR(DTE), MONTH(DTE)
以下查询给出了给定月份和年份的移动平均值 – 例如2011年10月
SELECT SUM(Active)/6 AS average FROM saturne
WHERE (YEAR(DTE) = 2011 AND MONTH(DTE) <= 10) OR (YEAR(DTE) = 2010 AND MONTH(DTE) > 10)
但是,我想生成一个查询,该查询返回下一列中的每月总计和12个月移动平均值.
year month total average
2012 2 701474 9258089
2012 1 877535 9386664
... etc
(因子6是因为数据表示每10分钟记录一次的瞬时功率,将总数除以6给出总能量)
解决方法:
尝试:
SELECT YEAR(GDTE) AS year,
MONTH(GDTE) AS month,
SUM(case when i=0 then Active end)/6 as total,
SUM(Active)/(MAX(i+1)*6) as avg