我正在尝试聚合“agg”列中的数组,按产品分组,并获取过去13周内的所有事件。
例如:聚合的第一行值应该是:聚合所有按产品对它们进行分组的数组,并仅获取最后13周的数据。从2014年2月8日到最后13天(最后13周的日期为2014年2月8日作为参考,即11-10-2013)
我尝试了以下方法但不起作用。
select array_cat(a.agg2) over(partition by a.PName order by a.PName ,a.week_date desc rows between 0 preceding and 13 following)
from (
select PName,week_date,array_agg(raw_value) agg2,
from vin_temp_table group by PName,week_date order by PName,week_date desc
)a
编辑:
查询:
select PName,week_date,array_agg(raw_value) agg,
from vin_temp_table group by PName,week_date order by PName,week_date desc
产生以下数据
PName week_date agg
5773 2/8/2014 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
5773 2/1/2014 {0,0,0,0,0,0,0,0,0,0,0,0,0}
5773 1/25/2014 {0,0,0,0,0,0,0,0,0,0,0,0,0}
5774 1/18/2014 {0,0,0,0,0,0,0,0,0,0,0,0,0}
5775 1/11/2014 {0,0,0,0,0,0,0,0,0,0,0,0,0}
5776 12/28/2013 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
5776 12/21/2013 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
5776 12/14/2013 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
5776 12/7/2013 {0,0,0,0,0,0,0,0,0,0,0,0,0}
5777 11/30/2013 {0,0,0,0,0,0,0,0,0,0,0,0,0}
5778 11/16/2013 {0,0,0,0,0,0,0,0,0,0,0,0}
5778 11/9/2013 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
5778 11/2/2013 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
原始数据:select * from vin_temp_table
Pname week_date raw_value
5773 10/21/2006 0
5773 10/28/2006 0
5773 11/18/2006 0
5773 11/18/2006 0
5773 1/20/2007 0
5773 5/12/2007 0
5773 7/21/2007 0
5773 7/21/2007 0
5773 8/11/2007 0
5773 8/25/2007 0
5773 9/1/2007 0
我甚至尝试在Pname和week_date上使用array_agg进行分区。但是,由于Greenplum版本8.2不支持它,因此也没有成功。
有人能帮帮我吗?感谢。