本方法只支持在聚合函数窗口中调用 不支持在GROUP BY中使用,使用plsql写的玩意新能都会稍微差一些 建议使用原生方法修改
CREATE OR REPLACE FUNCTION _final_median(numeric[])RETURNS numeric AS
$$SELECT AVG(val)FROM (SELECT valFROM unnest($1) valORDER BY 1LIMIT 2 - MOD(array_upper($1, 1), 2)OFFSET CEIL(array_upper($1, 1) / 2.0) - 1) sub;
$$
LANGUAGE 'sql' IMMUTABLE;CREATE AGGREGATE median(numeric) (SFUNC=array_append,STYPE=numeric[],FINALFUNC=_final_median,INITCOND='{}'
);