我不认为有这样的功能。
为了实现您的目标(在 SQL 中),您必须取消嵌套数组,然后添加相应的元素并将结果聚合回数组。
SELECT
array_agg(
COALESCE(h1.val, 0)+COALESCE(h2.val, 0)
ORDER BY COALESCE(h1.row_number, h2.row_number)
) as result
FROM
(SELECT ROW_NUMBER() over (), val FROM unnest('{3,5,1,5}'::int[]) as val) as h1
FULL JOIN (SELECT ROW_NUMBER() over (), val FROM unnest('{2,2,2}'::int[]) as val) as h2 ON h1.row_number=h2.row_number
我正在使用ROW_NUMBER 窗口函数来获取数组元素编号。
FULL JOIN 是必需的,因为数组的长度可能不同。这也是添加元素时需要COALESCE的原因。
感谢@a_horse_with_no_name,查询可以使用序数重写而不依赖 row_number() 函数:
SELECT
array_agg(
COALESCE(h1.val, 0)+COALESCE(h2.val, 0)
ORDER BY COALESCE(h1.no, h2.no)
) as result
FROM
unnest('{3,5,1,5}'::int[]) WITH ORDINALITY as h1(val, no)
FULL JOIN unnest('{2,2,2}'::int[]) WITH ORDINALITY as h2(val, no) ON h1.no=h2.no