PostgreSQL的多参数聚合[英] PostgreSQL Aggregates with Multiple Parameters

本文是小编为大家收集整理的关于PostgreSQL的多参数聚合的处理方法,想解了PostgreSQL的多参数聚合的问题怎么解决?PostgreSQL的多参数聚合问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我一直在尝试在接受一个或多个选项参数的 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;

在哪里 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

本文地址:https://www.itbaoku.cn/post/1763855.html