在Greenplum中跨列连接数组

时间:2014-02-27 01:49:43

标签: sql arrays postgresql aggregate-functions greenplum

我正在尝试聚合“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不支持它,因此也没有成功。

有人能帮帮我吗?感谢。

0 个答案:

没有答案