我正在尝试创建使用多列作为输入的
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起可用
至于多个状态变量,正如杰克所说,你可以使用数组作为状态变量.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。