【发布时间】:2012-04-19 09:36:39
【问题描述】:
我正在尝试在 Postgres 中实现一个自定义聚合函数,该函数将以度为单位平均方向 - 即我希望能够做到:
SELECT circavg(direction) FROM sometable;
这可以使用公式来完成:
xbar = atan2(sum(sin(xi), sum(cos(xi)))
我想我需要定义一个 sfunc 来确定一个方向,并将其正弦和余弦添加到两个累加器中。最后一个函数然后使用 atan2 将这两个分量转换回一个方向。
我不知道如何定义 sfunc 以便当前状态由 两个 组件组成,例如(float, float)。文档中的具体示例有点短,因此感谢您提供任何帮助。
【问题讨论】:
-
欢迎来到 SO!您描述的
circavg采用单个参数,而您在xbar示例中指定了 2 个参数。此外,您错过了示例中的右括号。 -
@vyegorov:xbar 示例确实只有一个参数 (
xi),但它在两个地方使用。
标签: postgresql types aggregate-functions