加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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
);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读