diff options
| author | Luca Ferrari <fluca1978@gmail.com> | 2022-12-12 09:43:34 +0100 |
|---|---|---|
| committer | Luca Ferrari <fluca1978@gmail.com> | 2022-12-12 09:43:34 +0100 |
| commit | e14d4da9dddbf81d1e0cb9ba83a3b95c6584b6dc (patch) | |
| tree | 3e90072da497aaf34272d3e952a377ef7701e6cd | |
| parent | 733a94071f895afa1fe066133eb6010245bc4031 (diff) | |
| download | perlweeklychallenge-club-e14d4da9dddbf81d1e0cb9ba83a3b95c6584b6dc.tar.gz perlweeklychallenge-club-e14d4da9dddbf81d1e0cb9ba83a3b95c6584b6dc.tar.bz2 perlweeklychallenge-club-e14d4da9dddbf81d1e0cb9ba83a3b95c6584b6dc.zip | |
Task 2 plpgsql done
| -rw-r--r-- | challenge-195/luca-ferrari/postgresql/ch-2.sql | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/challenge-195/luca-ferrari/postgresql/ch-2.sql b/challenge-195/luca-ferrari/postgresql/ch-2.sql new file mode 100644 index 0000000000..c6b8cf318a --- /dev/null +++ b/challenge-195/luca-ferrari/postgresql/ch-2.sql @@ -0,0 +1,33 @@ +-- Perl Weekly Challenge 195 +-- Task 2 + +CREATE SCHEMA IF NOT EXISTS pwc195; + +CREATE OR REPLACE FUNCTION +pwc195.task2_plpgsql( list int[] ) +RETURNS int +AS $CODE$ +DECLARE + current int; +BEGIN + CREATE TEMPORARY TABLE IF NOT EXISTS nums( v int, f int default 1, primary key( v ) ); + TRUNCATE TABLE nums; + + FOREACH current IN ARRAY list LOOP + INSERT INTO nums AS frequency + SELECT current, 1 + ON CONFLICT (v) + DO UPDATE SET f = frequency.f + 1; + END LOOP; + + SELECT v + INTO current + FROM nums + WHERE v % 2 = 0 + ORDER BY f DESC, v ASC + LIMIT 1; + + RETURN current; +END +$CODE$ +LANGUAGE plpgsql; |
