年周总和(字符串)Vertica SQL

Sum over Yearweek (string) 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 是一个实际日期,但我想改为对报告周求和,例如,报告周看起来像“2017-20”(一个字符串)。我希望创建一个考虑过去 4 周的移动平均线。

如果我能提供任何其他信息,请告诉我!

提前致谢!

我正在使用 vertica SQL

您需要使用类似以下内容将“2017-20”字符串转换为日期:

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

请注意:在 TO_DATE 中,您可以使用

  • WW(第一周从每月的第一天开始)或
  • IW(ISO周:新年的第一个星期四在第1周)

这取决于您的报告周是如何定义的。