postgresql 自定义函数

CREATE OR REPLACE FUNCTION "public"."pm25_aqi"("pm25_nd" numeric)
RETURNS "pg_catalog"."int4" AS $BODY$
DECLARE
RET numeric;
IAQI_1 numeric;
IAQI_2 numeric;
IAQI_3 numeric;
IAQI_4 numeric;
IAQI_5 numeric;
IAQI_6 numeric;
IAQI_7 numeric;
IAQI_8 numeric; BP_1 numeric;
BP_2 numeric;
BP_3 numeric;
BP_4 numeric;
BP_5 numeric;
BP_6 numeric;
BP_7 numeric;
BP_8 numeric;
BEGIN
IAQI_1=0;
IAQI_2=50;
IAQI_3=100;
IAQI_4=150;
IAQI_5=200;
IAQI_6=300;
IAQI_7=400;
IAQI_8=500; BP_1=0;
BP_2=35;
BP_3=75;
BP_4=115;
BP_5=150;
BP_6=250;
BP_7=350;
BP_8=500; IF PM25_ND<=BP_2
THEN RET = ((IAQI_2-IAQI_1)/(BP_2-BP_1))*(PM25_ND-BP_1)+IAQI_1; ELSIF PM25_ND>BP_2 AND PM25_ND<=BP_3
THEN RET = ((IAQI_3-IAQI_2)/(BP_3-BP_2))*(PM25_ND-BP_2)+IAQI_2; ELSIF PM25_ND>BP_3 AND PM25_ND<=BP_4
THEN RET = ((IAQI_4-IAQI_3)/(BP_4-BP_3))*(PM25_ND-BP_3)+IAQI_3; ELSIF PM25_ND>BP_4 AND PM25_ND<=BP_5
THEN RET = ((IAQI_5-IAQI_4)/(BP_5-BP_4))*(PM25_ND-BP_4)+IAQI_4; ELSIF PM25_ND>BP_5 AND PM25_ND<=BP_6
THEN RET = ((IAQI_6-IAQI_5)/(BP_6-BP_5))*(PM25_ND-BP_5)+IAQI_5; ELSIF PM25_ND>BP_6 AND PM25_ND<=BP_7
THEN RET = ((IAQI_7-IAQI_6)/(BP_7-BP_6))*(PM25_ND-BP_6)+IAQI_6; ELSIF PM25_ND>BP_7
THEN RET = ((IAQI_8-IAQI_7)/(BP_8-BP_7))*(PM25_ND-BP_7)+IAQI_7;
END IF; IF RET>500 THEN RET=500; END IF; return ceiling(RET); END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
上一篇:【翻译】How To Tango With Django 1.5.4 第三章


下一篇:iOS上传文件,有关http上传协议-RFC1867