【发布时间】:2017-01-26 14:26:48
【问题描述】:
我正在使用 Greenplum DB,我想在一个窗口中计算中位数,例如:
SELECT avg(var1) OVER (PARTITION BY var2 ORDER BY datetime
ROWS BETWEEN 10 PRECEDING AND CURRENT ROW) FROM tbl...
不幸的是,Postgres 中没有实现中位数,所以我使用这个例子创建了我自己的聚合: https://wiki.postgresql.org/wiki/Aggregate_Median
问题是,当我使用整个列但不在窗口中(带有 OVER 子句)返回错误时,这有效,应该定义“prefunc”。 Greenplum 文档证实: http://gpdb.docs.pivotal.io/4380/ref_guide/sql_commands/CREATE_AGGREGATE.html
prefunc 的文档和作用对我来说不是很清楚。您有任何定义支持 windows 的自定义 Postgres 聚合函数的示例吗?
【问题讨论】:
标签: sql aggregate-functions greenplum