Hy vọng rằng ví dụ này sẽ giúp ích. Bạn cần một hàm nhận (bộ tích lũy, tổng hợp-đối số) và trả về giá trị bộ tích lũy mới. Hãy thử xem đoạn mã dưới đây và điều đó sẽ cho bạn cảm giác về cách tất cả chúng khớp với nhau.
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;
Điều đó sẽ cung cấp cho bạn một cái gì đó như:
one | double | triple
-----+--------+--------
6 | 12 | 18