उम्मीद है कि यह उदाहरण मदद करेगा। आपको एक ऐसे फ़ंक्शन की आवश्यकता है जो (संचयक, कुल-तर्क) लेता है और नया संचायक मान देता है। नीचे दिए गए कोड के साथ खेलें और इससे आपको यह महसूस होना चाहिए कि यह सब एक साथ कैसे फिट बैठता है।
BEGIN;
CREATE FUNCTION sum_product_fn(int,int,int) RETURNS int AS $$
SELECT $1 + ($2 * $3);
$$ LANGUAGE SQL;
CREATE AGGREGATE sum_product(int, int) (
sfunc = sum_product_fn,
stype = int,
initcond = 0
);
SELECT
sum(i) AS one,
sum_product(i, 2) AS double,
sum_product(i,3) AS triple
FROM generate_series(1,3) i;
ROLLBACK;
यह आपको कुछ इस तरह देना चाहिए:
one | double | triple
-----+--------+--------
6 | 12 | 18