Contents
Solution: Server-Side Functions
Create an aggregate function to determine if
there are more male or female students in the workshop DB.
First execute in a unix shell: createlang plpgsql workshop
CREATE OR REPLACE FUNCTION count_f_m()
RETURNS varchar AS '
DECLARE table_row RECORD;
count_f INT;
count_m INT;
retstr varchar;
BEGIN
count_f := 0;
count_m := 0;
retstr := ''equal counts'';
FOR table_row IN SELECT gender FROM stud
LOOP
IF table_row.gender = ''f'' THEN count_f := count_f+1;
ELSIF table_row.gender = ''m'' THEN count_m := count_m+1;
END IF;
END LOOP;
IF count_f > count_m THEN retstr = ''female'';
ELSIF count_f < count_m THEN retstr = ''male'';
END IF;
RETURN retstr;
END;'
LANGUAGE 'plpgsql' ;
Within psql do:
\i filename.sql
SELECT count_f_m();