postgresql 臭氧8小时聚合函数

1、定义数据拼接函数

CREATE OR REPLACE FUNCTION "public"."sfun"("results" _numeric, "val" numeric)
  RETURNS "pg_catalog"."_numeric" AS $BODY$

BEGIN
    results :=array_append(results,val::numeric);
RETURN results;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

ALTER FUNCTION "public"."sfun"("results" _numeric, "val" numeric) OWNER TO "postgres";

2、定义数据处理函数

CREATE OR REPLACE FUNCTION "public"."sffun_o3_8h"("results" _numeric)
  RETURNS "pg_catalog"."numeric" AS $BODY$

DECLARE 
    tmp integer;
    len integer;
    ret numeric[];--结果
BEGIN
   len=array_length(results , 1);
     if  len<8 then return -999; end if;
  
    for i in 8..len loop
        tmp=0;
        for j in 0..7 loop
            tmp=tmp+results[i-j];
        end loop;
        tmp=tmp/8::numeric;
        ret:=array_append(ret,tmp::numeric);
    end loop;

    ret=array_sort(ret,'asc');

    RETURN ret[array_length(ret,1)];
END;

$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

ALTER FUNCTION "public"."sffun_o3_8h"("results" _numeric) OWNER TO "postgres";

3、定义臭氧8小时触发器

CREATE AGGREGATE agg_o3_8h(
BASETYPE = numeric,
SFUNC = sfun,
STYPE = numeric[],
FINALFUNC = sffun_o3_8h
);

 

转载于:https://www.cnblogs.com/tiandi/p/11165678.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值