Postgresql 在postgres v9.6+中累积数组元素;

Postgresql 在postgres v9.6+中累积数组元素;,postgresql,Postgresql,使用PostgresSQLV9.6,创建一个包含整数数组的表(所有数组都具有相同的维度)。 我需要按数组中的每个元素跨行累加值 一张桌子,一排排 {1,2,3} {4,5,6} {7,8,9} 取得 {12,15,18} 尝试使用array\u agg(),但结果不同 SELECT array_agg(array_column) AS "array_accum" FROM mytable; 给予 {{1,2,3},{4,5,6},{7,8,9} 这可以很容易地完成吗?如果数组很短,如您

使用PostgresSQLV9.6,创建一个包含整数数组的表(所有数组都具有相同的维度)。 我需要按数组中的每个元素跨行累加值

一张桌子,一排排

{1,2,3}

{4,5,6}

{7,8,9}
取得

{12,15,18}
尝试使用
array\u agg()
,但结果不同

SELECT array_agg(array_column) AS "array_accum" FROM mytable;
给予

{{1,2,3},{4,5,6},{7,8,9}


这可以很容易地完成吗?

如果数组很短,如您的示例中所示,我建议只对单个元素求和,然后将其粘贴回另一个数组中。例如:

SELECT 
ARRAY[ SUM(array_column[1]) 
     , SUM(array_column[2])
     , SUM(array_column[3])]
FROM mytable

广义解决方案:

select string_to_array(string_agg(sl,','),',')::integer[]
from (
      select s, (sum(v)::text) sl
        from (
              select s   
                   , array_column[s] v
                from (select generate_subscripts(array_column, 1) as s
                           , array_column 
                        from array_list
                     ) al
             ) sv
       group by s
       order by s ) sal;