创建聚合函数失败

Creating an aggregate function fails

在寻找 returns 集合的第 n 个元素的聚合函数时,我找到了以下解决方案:

CREATE OR REPLACE FUNCTION _final_nth( anyarray, integer )
  RETURNS anyelement AS
$BODY$
    SELECT a
    FROM unnest(  ) a
    ORDER BY a
    offset 
    LIMIT 1;
$BODY$
LANGUAGE 'sql' IMMUTABLE; 

CREATE AGGREGATE nth( anyelement, integer ) (
  SFUNC=array_append,
  STYPE=anyarray,
  FINALFUNC=_final_nth,
  INITCOND='{}'
); 

创建函数工作正常,但执行 CREATE AGGREGATE 会产生以下错误:

ERROR: function array_append(anyarray, anyelement, integer) does not exist

我无法解决这个错误。

也许这会有所帮助:

CREATE OR REPLACE FUNCTION _final_nth( anyarray, integer )
  RETURNS anyelement AS
$BODY$
    SELECT a
    FROM unnest(  ) a
    ORDER BY a
    offset 
    LIMIT 1;
$BODY$

无需额外的聚合函数即可使用它。

SELECT _final_nth(array_agg(someelement),n) AS someelement
FROM sometable
GROUP BY someelement;

n 是偏移量。