सामान्य समाधान किसी भी संख्या में तत्वों के साथ किसी भी संख्या में सरणी के लिए। व्यक्तिगत तत्व या संपूर्ण सरणी भी 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
);
देखें:
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
);
देखें:
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 नहीं हैं और कुछ लोगों द्वारा इसे पसंद किया गया था। हालांकि पोस्टग्रेज 10 के बाद से ठीक होना चाहिए। देखें:
db<>fiddle यहां
पुराना sqlfiddle
उप>
संबंधित: