我有一個包含大約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