【发布时间】:2011-12-02 00:44:09
【问题描述】:
我正在尝试理解聚合函数,我需要帮助。
例如以下示例:
CREATE OR REPLACE FUNCTION array_median(timestamp[])
RETURNS timestamp AS
$$
SELECT CASE WHEN array_upper($1,1) = 0 THEN null ELSE asorted[ceiling(array_upper(asorted,1)/2.0)] END
FROM (SELECT ARRAY(SELECT ($1)[n] FROM
generate_series(1, array_upper($1, 1)) AS n
WHERE ($1)[n] IS NOT NULL
ORDER BY ($1)[n]
) As asorted) As foo ;
$$
LANGUAGE 'sql' IMMUTABLE;
CREATE AGGREGATE median(timestamp) (
SFUNC=array_append,
STYPE=timestamp[],
FINALFUNC=array_median
)
我不了解需要进入聚合函数本身的 select 语句的结构/逻辑。有人能解释一下流程/逻辑是什么吗?
我正在写一个聚合,一个奇怪的聚合,返回总是它见过的第一个字符串。
【问题讨论】:
标签: sql postgresql aggregate-functions