postgresql 自定义aggregate function实现reduce

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

你可能感兴趣的:(postgresql)