Như đã biết, hàm tập hợp trong PostgreSQL theo chuẩn SQL nghĩa là, nó có tác dụng xử lý tất cả các hàng có trong một cột dữ liệu, từ hàng đầu tiên đến hàng cuối cùng của cột đó. Ví dụ, với hàm tính tổng theo chuẩn SQL có tên là sum(), khi người dùng gọi hàm này, tương đương với việc người dùng muốn tính tổng các giá trị tất cả các hàng trong một cột cụ thể nào đó : SELECT sum (price) FROM Price;
Tương tự với các hàm tập hợp theo chuẩn SQL, hàm tập hợp do người định nghĩa mở rộng cho PostgreSQL cũng có nhiệm vụ tương tự là xử lý tất cả các hàng có trong một cột dữ liệu, từ hàng đầu tiên đến hàng cuối cùng. Để tạo hàm tập hợp mới, sử dụng cú pháp sau :
CREATE AGGREGATE name ( input_data_type [ , ... ] ) ( SFUNC = sfunc,
[ , INITCOND = initial_condition ] )
+ name : tên của hàm tập hợp tạo ra.
+ input_data_type : kiểu dữ liệu của tham số khi nhập vào hàm.
+ sfunc : tên hàm được sử dụng để thực hiện mục đích của hàm tập hợp. Ví dụ, để tạo hàm tập hợp thực hiện chức năng tính tổng các dữ liệu kiểu point3d, thì cần có một hàm thực hiện việc tính tổng trên kiểu dữ liệu point3d.
+ initial_condition : thiết lập ban đầu cho giá trị trạng thái. Nghĩa là điều kiện ban đầu cho kiểu dữ liệu được nhập vào hàm.
VD : tạo hàm tập hợp để tính tổng các số phức
CREATE AGGREGATE sum_complex(Complex) (
sfunc = complex_add, Stype = Complex, Initcond = ‘(0,0)’ );
Sau khi hàm tập hợp được tạo, nó sẽ đựợc sử dụng như những hàm tập hợp chuẩn. Tuy nhiên, với những hàm tập hợp chuẩn, nó có thể thực thi với mọi kiểu dữ liệu chuẩn, còn hàm tập hợp do người dùng định nghĩa chỉ thực thi thi người dùng truyền đúng kiểu dữ liệu cho biến khi sử dụng hàm.