aboutsummaryrefslogtreecommitdiff
path: root/challenge-253/luca-ferrari/plpgsql
diff options
context:
space:
mode:
authorLuca Ferrari <fluca1978@gmail.com>2024-01-22 08:54:32 +0100
committerLuca Ferrari <fluca1978@gmail.com>2024-01-22 13:21:10 +0100
commit52e2018af75d08a9b77b8e3bb56a7b2fffc6f42b (patch)
tree63b205906393dabcfbf3422ee6dc8ae48a3a61e7 /challenge-253/luca-ferrari/plpgsql
parent9d7dc816f7775abfee7d90f0a2a969611902be54 (diff)
downloadperlweeklychallenge-club-52e2018af75d08a9b77b8e3bb56a7b2fffc6f42b.tar.gz
perlweeklychallenge-club-52e2018af75d08a9b77b8e3bb56a7b2fffc6f42b.tar.bz2
perlweeklychallenge-club-52e2018af75d08a9b77b8e3bb56a7b2fffc6f42b.zip
PWC 253
Task 1 Raku done Task 2 Raku done Task 1 PL/Perl done Task 2 PL/Perl done Task 1 PL/PgSQL done Task 2 PL/PgSQL done Task 1 Python done Task 2 Python done Task 1 PL/Java done Task 2 PL/Java done
Diffstat (limited to 'challenge-253/luca-ferrari/plpgsql')
-rw-r--r--challenge-253/luca-ferrari/plpgsql/ch-1.sql24
-rw-r--r--challenge-253/luca-ferrari/plpgsql/ch-2.sql40
2 files changed, 64 insertions, 0 deletions
diff --git a/challenge-253/luca-ferrari/plpgsql/ch-1.sql b/challenge-253/luca-ferrari/plpgsql/ch-1.sql
new file mode 100644
index 0000000000..78911752d1
--- /dev/null
+++ b/challenge-253/luca-ferrari/plpgsql/ch-1.sql
@@ -0,0 +1,24 @@
+--
+-- Perl Weekly Challenge 253
+-- Task 1
+-- See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-253>
+--
+
+CREATE SCHEMA IF NOT EXISTS pwc253;
+
+CREATE OR REPLACE FUNCTION
+pwc253.task1_plpgsql( s char, words text[] )
+RETURNS SETOF text
+AS $CODE$
+DECLARE
+ current_word text;
+BEGIN
+ FOREACH current_word IN ARRAY words LOOP
+ RETURN QUERY
+ SELECT regexp_split_to_table( current_word, '[' || s || ']' );
+ END LOOP;
+
+RETURN;
+END
+$CODE$
+LANGUAGE plpgsql;
diff --git a/challenge-253/luca-ferrari/plpgsql/ch-2.sql b/challenge-253/luca-ferrari/plpgsql/ch-2.sql
new file mode 100644
index 0000000000..80971effac
--- /dev/null
+++ b/challenge-253/luca-ferrari/plpgsql/ch-2.sql
@@ -0,0 +1,40 @@
+--
+-- Perl Weekly Challenge 253
+-- Task 2
+-- See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-253>
+--
+
+CREATE SCHEMA IF NOT EXISTS pwc253;
+
+CREATE OR REPLACE FUNCTION
+pwc253.task2_plpgsql( matrix int[][] )
+RETURNS SETOF int
+AS $CODE$
+DECLARE
+ current_row int[];
+ c_ones int;
+BEGIN
+ CREATE TEMPORARY TABLE IF NOT EXISTS ones( r int, c int );
+ TRUNCATE ones;
+
+ FOR i IN 1 .. array_length( matrix, 1 ) LOOP
+ c_ones := 0;
+ FOR j IN 1 .. array_length( matrix, 2 ) LOOP
+ c_ones := c_ones + matrix[ i ][ j ];
+ END LOOP;
+
+ INSERT INTO ones
+ SELECT i, c_ones;
+
+ END LOOP;
+
+ RETURN QUERY
+ SELECT r
+ FROM ones
+ ORDER BY c DESC, r ASC;
+
+
+RETURN;
+END
+$CODE$
+LANGUAGE plpgsql;