Postgresql 在postgres v9.6+中累积数组元素;
使用PostgresSQLV9.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} 这可以很容易地完成吗?如果数组很短,如您
{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;