del*_*del 10 sql postgresql aggregate-functions
我正在尝试创建使用多列作为输入的用户定义聚合函数,并输出单个列.
例如,计算加权平均值,我们可以使用两列名为num_samples
和quantity
,像这样的查询:
SELECT sum(num_samples * quantity) / sum(num_samples) AS weighted_avg FROM table;
Run Code Online (Sandbox Code Playgroud)
但是,我想要定义的函数非常复杂(例如加权标准偏差)并且被多次使用.我想定义自己的聚合函数,以便可以在select查询中轻松使用它们.例如,如果我想找到加权平均值和总和,我会使用如下查询:
SELECT weighted_avg(num_samples, quantity), sum(quantity)
Run Code Online (Sandbox Code Playgroud)
但是,从文档中看,用户定义的聚合看起来只允许使用单个状态变量,但是这个示例需要两个状态变量:一个用于运行总计,quantity
一个用于运行总计num_samples
.
是否有可能通过用户定义的聚合函数实现我想要的,或者有更好的方法吗?我正在使用PostgreSQL 8.3.
小智 0
从您的链接中:“avg(平均值)是一个更复杂的聚合示例。它需要两个运行状态:输入的总和和输入数量的计数。最终结果是通过将这些数量相除获得的。平均值通常是通过使用二元素数组作为状态值来实现的。”
做这样的事情怎么样?
归档时间: |
|
查看次数: |
3936 次 |
最近记录: |