Написание SQL-запроса, который должен возвращать средние расходы за предыдущее 91-дневное окно. Я усекаю дату до первого дня недели и ожидаю, что 91-дневный средний показатель составит 91 день до до этой даты.Oracle Analytic Preceded Возвращает неверные/непредвиденные результаты
Однако при проверке кажется, что средний показатель за 91 день включает в себя текущую неделю, которую я усекал.
Запрос:
SELECT
week AS WEEK,
to_char(week,'ww-yyyy') AS Week_num
--Sum of the charges for the previous 91 days/91 will give you avg charges per day for the last 91 days
--Need to count days regardless of if there are any charges on that day
,(SUM(CHARGES) OVER (ORDER BY WEEK RANGE INTERVAL '91' DAY PRECEDING))/91 MV_91_DAY_AVG
FROM
(
SELECT
--Truncate date down to first of week. Goal is to make 91 day preceding being at this date.
TRUNC(TRANS.ORIG_POST_DATE,'WW') AS WEEK
,SUM(TRANS.AMOUNT) AS CHARGES
FROM TRANS
WHERE
TRANS.DETAIL = "Charge"
GROUP BY TRUNC(TRANS.ORIG_POST_DATE,'WW')
)
ORDER BY WEEK
Выход по току:
Если у вас есть вопрос, похожий на мой выше, я настоятельно рекомендую вам ознакомиться с этим обзором функций Oracle Analytic, которые можно найти на youtube на канале овечьей кожи, http://www.youtube.com/user/sheepsqueezersYT/search ? query = аналитический, или http://www.sheepsqueezers.com/. – Cimplicity