Skip to content

Instantly share code, notes, and snippets.

@00krishna
Created March 30, 2016 23:42
Show Gist options
  • Save 00krishna/fe059a84c6c5dd2531f49699b0c0514a to your computer and use it in GitHub Desktop.
Save 00krishna/fe059a84c6c5dd2531f49699b0c0514a to your computer and use it in GitHub Desktop.
take the average of 4 numbers, guarding for null values.
CREATE OR REPLACE FUNCTION AVERAGE4 (
V1 NUMERIC,
V2 NUMERIC,
V3 NUMERIC,
V4 NUMERIC)
RETURNS NUMERIC
AS $FUNCTION$
DECLARE
COUNT NUMERIC;
TOTAL NUMERIC;
BEGIN
COUNT=0;
TOTAL=0;
IF V1 IS NOT NULL THEN COUNT=COUNT+1; TOTAL=TOTAL+V1; END IF;
IF V2 IS NOT NULL THEN COUNT=COUNT+1; TOTAL=TOTAL+V2; END IF;
IF V3 IS NOT NULL THEN COUNT=COUNT+1; TOTAL=TOTAL+V3; END IF;
IF V4 IS NOT NULL THEN COUNT=COUNT+1; TOTAL=TOTAL+V4; END IF;
RETURN TOTAL/COUNT;
EXCEPTION WHEN DIVISION_BY_ZERO THEN RETURN NULL;
END
$FUNCTION$ LANGUAGE PLPGSQL;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment