我希望通过对每周值求和来在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
答案 0 :(得分:0)
您需要使用以下内容将“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周)这取决于您的报告周的定义方式。