我有这种格式滚动平均失踪一个月的情况下,Teradata的
student_id,month1,fees
A1,201612,22
A1,201611,33
A1,201610,44
A1,201609,55
A1,201608,66
A1,201607,77
A1,201606,88
A2,201612,12
A2,201610,24
A2,201609,36
A2,201607,48
我希望每一个学生考虑的最后三个月份的费用平均费用数据意味着学生A1,为一个月201612,手续费会总和(22,33,44)/ 3,所以我用这个查询
(select student_id,month1,fees,(sum(fees) over(partition by
student_id
order by
student_id
,
month1
asc rows between 2 preceding and current row))/3 as avg1 from table where
month1
>(select trim(Add_Months(cast(trim(maxrepmonth) as DATE Format 'YYYYMM'),-5) (format 'YYYYMM')) from (select max(
month1
) as maxrepmonth from table) z2) group by 1,2,3)
并且它是具有全部个月的数据,但在学生A2的情况下,一个月201612,它正在这工作正常学生A1这些月份的费用201612,201610,201609这是错误的,而应该只从201612,201610开始,因为201611错过了ING。 请帮忙。
感谢
从ANSI-99标准
好方案,Teradata不支持RANGE窗口子句是一个惊喜给我。应该首先阅读文档...但是我刚刚发布了一个可能的解决方法1分钟前 – marcothesane