create or replace function lmy(first INTEGER, item INTEGER) returns INTEGER as $$
BEGIN
return first * item;
END;
$$
LANGUAGE plpgsql;
create aggregate yml(INTEGER) (
sfunc = lmy,
stype = INTEGER,
initcond = 1
);
isnp=# select i, yml(i) over (order by i) from generate_series(1,10) i;
i | yml |
---|---|
1 | 1 |
2 | 2 |
3 | 6 |
4 | 24 |
5 | 120 |
6 | 720 |
7 | 5040 |
8 | 40320 |
9 | 362880 |
10 | 3628800 |