aboutsummaryrefslogtreecommitdiff
path: root/challenge-260/luca-ferrari/plpgsql/ch-1.sql
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-260/luca-ferrari/plpgsql/ch-1.sql')
-rw-r--r--challenge-260/luca-ferrari/plpgsql/ch-1.sql34
1 files changed, 34 insertions, 0 deletions
diff --git a/challenge-260/luca-ferrari/plpgsql/ch-1.sql b/challenge-260/luca-ferrari/plpgsql/ch-1.sql
new file mode 100644
index 0000000000..3f6d3cdaa6
--- /dev/null
+++ b/challenge-260/luca-ferrari/plpgsql/ch-1.sql
@@ -0,0 +1,34 @@
+--
+-- Perl Weekly Challenge 260
+-- Task 1
+-- See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-260>
+--
+
+CREATE SCHEMA IF NOT EXISTS pwc260;
+
+CREATE OR REPLACE FUNCTION
+pwc260.task1_plpgsql( nums int[] )
+RETURNS boolean
+AS $CODE$
+
+ WITH numbers AS (
+ SELECT n
+ FROM unnest( nums ) n
+ )
+ , counting AS (
+ SELECT n, count(*) AS c
+ FROM numbers
+ GROUP BY n
+ )
+ , grouping AS (
+ SELECT c, count(*) AS g
+ FROM counting
+ GROUP BY c
+ )
+ SELECT NOT EXISTS( SELECT g
+ FROM grouping
+ WHERE g > 1
+ );
+
+$CODE$
+LANGUAGE sql;