약 10 년 동안의 데이터가 포함 된 테이블 (날짜, 페이로드)이 있으며 14 일 (2 주) 및 90 일 기준으로 페이로드의 추세를 표시하기 위해 이동 평균 (MA) 일 (12 주) 간격오라클 이동 평균
내가이 쿼리 작성했습니다하지만 나에게 잘못 값
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 일 (1 ~ 5)에 주 1이 해당 달의 첫 번째 날에 시작하여 일곱 번째 날에 끝나는 곳을 나타냅니다. – Noel