Solusi umum untuk sejumlah array dengan sejumlah elemen. Elemen individu atau seluruh array juga bisa NULL:
Lebih sederhana di 9.4+ menggunakan WITH ORDINALITY
SELECT ARRAY (
SELECT sum(elem)
FROM tbl t
, unnest(t.arr) WITH ORDINALITY x(elem, rn)
GROUP BY rn
ORDER BY rn
);
Lihat:
Postgres 9.3+
Ini menggunakan LATERAL JOIN
implisit
SELECT ARRAY (
SELECT sum(arr[rn])
FROM tbl t
, generate_subscripts(t.arr, 1) AS rn
GROUP BY rn
ORDER BY rn
);
Lihat:
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
);
Hal yang sama berfungsi di versi yang lebih baru, tetapi mengatur fungsi pengembalian di SELECT
daftar bukan SQL standar dan tidak disukai oleh beberapa orang. Seharusnya baik-baik saja sejak Postgres 10. Lihat:
db<>fiddle di sini
Lama sqlfiddle
Terkait: