加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

用户定义的聚合函数,PostgreSQL中有多个输入列

发布时间:2020-12-13 20:10:09 所属栏目:百科 来源:网络整理
导读:我正在尝试创建使用多列作为输入的 user-defined aggregate functions,并输出一列. 例如,要计算weighted average,我们可能会使用两个名为num_samples和quantity的列,并使用如下查询: SELECT sum(num_samples * quantity) / sum(num_samples) AS weighted_av
我正在尝试创建使用多列作为输入的 user-defined aggregate functions,并输出一列.

例如,要计算weighted average,我们可能会使用两个名为num_samples和quantity的列,并使用如下查询:

SELECT sum(num_samples * quantity) / sum(num_samples) AS weighted_avg FROM table;

但是,我想要定义的函数非常复杂(例如加权标准偏差)并且被多次使用.我想定义自己的聚合函数,以便在select查询中轻松使用它们.例如,如果我想找到加权平均值和总和,我会使用这样的查询:

SELECT weighted_avg(num_samples,quantity),sum(quantity)

但是,从文档中看,用户定义的聚合看起来只允许一个状态变量,但是这个例子需要两个状态变量:一个用于运行总数量,一个用于运行总数num_samples.

是否有可能通过用户定义的聚合函数实现我想要的,或者有更好的方法吗?我正在使用PostgreSQL 8.3.

请参阅: How to create multi-column aggregates,自PostgreSQL 8.2起可用

至于多个状态变量,正如杰克所说,你可以使用数组作为状态变量.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读