postgresql 自定义聚合函数
发布时间:2020-12-13 16:06:42 所属栏目:百科 来源:网络整理
导读:方法1 CREATE OR REPLACE FUNCTION public .sfun_test1( results numeric [] ,val numeric) RETURNS numeric [] LANGUAGE ‘ plpgsql ‘ COST 100 VOLATILE AS $BODY$ BEGIN results : = array_append(results,val); RETURN results; END ;$BODY$; ALTER FUN
方法1 CREATE OR REPLACE FUNCTION public.sfun_test1( results numeric[],val numeric) RETURNS numeric[] LANGUAGE ‘plpgsql‘ COST 100 VOLATILE AS $BODY$ BEGIN results :=array_append(results,val); RETURN results; END; $BODY$; ALTER FUNCTION public.sfun_test1(numeric[],numeric) OWNER TO postgres; 方法2: CREATE OR REPLACE FUNCTION public.sffun_test1( results numeric[]) RETURNS numeric LANGUAGE ‘plpgsql‘ COST 100 VOLATILE AS $BODY$ DECLARE ppp integer;--百分位指标 kkk numeric;--序号 sss integer;--序号 ret numeric[];--结果 BEGIN ppp=90;--第90百分位 kkk=1+(array_length(results,1)-1)*ppp/100::numeric; sss=floor(kkk); ret=array_sort(results,‘asc‘); RETURN ret[sss]+(ret[sss+1]-ret[sss])*(kkk-sss); END; $BODY$; ALTER FUNCTION public.sffun_test1(numeric[]) OWNER TO postgres; 创建聚合函数 CREATE AGGREGATE agg_test1( BASETYPE = numeric,SFUNC = sfun_test1,STYPE = numeric[],FINALFUNC = sffun_test1 ); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |