我有一个包含大约10年数据的表格(日期,有效载荷),并且我想根据14天(2周)和90天计算显示有效载荷趋势的移动平均值(MA)天(12周)的时间间隔Oracle移动平均数
我写此查询,但它让我错误的价值观
SELECT x.*,
ABS (LTMA-STMA) DIFFERECNE
FROM
(SELECT SDATE,
PAYLOAD,
AVG(PAYLOAD) OVER (ORDER BY W ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) STMA,
AVG(PAYLOAD) OVER (ORDER BY W ROWS BETWEEN 12 PRECEDING AND CURRENT ROW) LTMA
FROM
(SELECT b.*,
TO_NUMBER(TO_CHAR(X.SDATE, 'W')) W
FROM
(SELECT TO_DATE(TO_CHAR(a.SDATE, 'YYYY-MM-DD'), 'YYYY-MM-DD') SDATE,
SUM(a.PAYLOAD) PAYLOAD
FROM TABLE_PAYLOAD a
WHERE a.SDATE > sysdate - 3 * 365
GROUP BY TO_CHAR(a.SDATE, 'YYYY-MM-DD')
ORDER BY TO_CHAR(a.SDATE, 'YYYY-MM-DD')
) b )
ORDER BY SDATE
) x;
其实我知道什么是MA
,但我不明白甲骨文是如何工作的!
我可以在Excel中计算MA
但我需要在数据库级别执行此操作,请问如何执行此操作?
通过与Windowing子句(列W)中使用的键相同的键来指定最终的输出,那么结果应该更清晰。 –
我认为你对'W'周数的计算是不正确的。 W给出了一个月的周(1-5),其中第一周在该月的第一天开始,在第七天结束。 – Noel