Сумма за год (строка) Vertica SQL

Я ищу, чтобы создать скользящее среднее в SQL путем суммирования по недельным значениям. Моя проблема заключается в том, что диапазон, который я суммирую, - это неделя года, и поэтому он не считается целочисленным значением, поэтому у меня возникают проблемы с настройкой диапазона для суммирования. Например:

select distinct 
origin,
reportweek, 
t2.date as 'Date',
sum(number1) over (order by t2.date range between interval '30 days' preceding and current row) as 'MovingAvg'

from table1 t1
left join table2 t2 on reportweek = yearweek

group by reportweek,origin,number1,t2.date;

Этот запрос работает, поскольку t2.date является фактической датой, но я хочу вместо этого подвести итоги за Reportweek, где неделя отчета, например, выглядит как "2017-20" (строка). Я рассчитываю создать скользящую среднюю с учетом последних 4 недель.

Пожалуйста, дайте мне знать, если я могу предоставить любую другую информацию!

Заранее спасибо!

Я использую Vertica SQL

1 ответ

Решение

Вам нужно преобразовать строки '2017-20' в даты, используя что-то вроде:

... OVER(ORDER BY TO_DATE(reportweek, 'YYYY-WW') 
         RANGE BETWEEN INTERVAL '4 weeks' PRECEDING AND CURRENT ROW)...

Помните: в TO_DATE вы можете использовать либо

  • WW (первая неделя начинается в первый день месяца) или
  • IW (Неделя ISO: первый четверг нового года - первая неделя)

Это зависит от того, как определяется ваша отчетная неделя.

Другие вопросы по тегам