Общи решения за произволен брой масиви с произволен брой елементи. Индивидуалните елементи или целият масив също могат да бъдат NULL:
По-просто в 9.4+ с помощта на WITH ORDINALITY
SELECT ARRAY (
SELECT sum(elem)
FROM tbl t
, unnest(t.arr) WITH ORDINALITY x(elem, rn)
GROUP BY rn
ORDER BY rn
);
Вижте:
Postgres 9.3+
Това използва имплицитно LATERAL JOIN
SELECT ARRAY (
SELECT sum(arr[rn])
FROM tbl t
, generate_subscripts(t.arr, 1) AS rn
GROUP BY rn
ORDER BY rn
);
Вижте:
Postgres 9.1
SELECT ARRAY (
SELECT sum(arr[rn])
FROM (
SELECT arr, generate_subscripts(arr, 1) AS rn
FROM tbl t
) sub
GROUP BY rn
ORDER BY rn
);
Същото работи в по-късните версии, но функциите за връщане на набор в SELECT
списък не са стандартен SQL и на някои не се гледаше с недоволство. Все пак трябва да е наред след Postgres 10. Вижте:
Свързани: