The extended aggregate
After you execute the CREATE FUNCTION statement in Figure 1, you
can use the SUM aggregate on complexnum_t columns. For example,
suppose you create the tab1 table as the following code fragment
shows.
Figure 1. A
table with a complexnum_t column
CREATE TABLE tab1
(col1 INTEGER,
col2 complexnum_t,
col3 INTEGER);
INSERT INTO tab1
VALUES (1, row(1.5, 3.7)::complexnum_t, 24);
INSERT INTO tab1
VALUES (2, row(6.9, 2.3)::complexnum_t, 13);
INSERT INTO tab1
VALUES (3, row(4.2, 9.4)::complexnum_t, 9);
INSERT INTO tab1
VALUES (4, row(7.0, 8.5)::complexnum_t, 5);
INSERT INTO tab1
VALUES (5, row(5.1, 6.2)::complexnum_t, 31);
INSERT INTO tab1
VALUES (6, row(3.9, 4.6)::complexnum_t, 19);
The following query uses the SUM aggregate function on
the complexnum_t column, col2:
SELECT SUM(col2) FROM tab1;
With the rows that Figure 1 has
inserted, the preceding query yields a complexnum_t value of:
ROW(28.6, 34.7)
As a side effect of the new plus() function, you
can also add two complexnum_t columns in an SQL expression,
as follows:
SELECT complex_num1 + complex_num2 FROM complex_nums
WHERE id > 6;