我一直在尝试在 PostgreSQL(8.4 或 9.1)中创建接受一个或多个选项参数的聚合。
一个例子是创建一个PL/R
计算第 p 个分位数的扩展,其中0 <= p <= 1
。这看起来像quantile(x,p)
,并作为查询的一部分:
select category,quantile(x,0.25)
from TABLE
group by category
order by category;
Where TABLE (category:text, x:float)
.
建议?
希望这个例子能有所帮助。您需要一个接受(累加器,聚合参数)并返回新累加器值的函数。尝试一下下面的代码,这应该会让您感受到它们是如何组合在一起的。
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;
这应该给你类似的东西:
one | double | triple
-----+--------+--------
6 | 12 | 18
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)