diff options
| author | Dave Jacoby <jacoby.david@gmail.com> | 2024-07-16 13:05:06 -0400 |
|---|---|---|
| committer | Dave Jacoby <jacoby.david@gmail.com> | 2024-07-16 13:05:06 -0400 |
| commit | f1ca8f7ac614d1b7cdc97a4284cfa710ab60f6c6 (patch) | |
| tree | f601757a365713812e069bd9f49d0ad05046fa41 /challenge-278/luca-ferrari/plpgsql | |
| parent | 99b5231db016ad59d74ae19ab4f706dab31e9207 (diff) | |
| parent | dd7b7f3344a33d4c8f1b6947e58eeb2ba02f84f3 (diff) | |
| download | perlweeklychallenge-club-f1ca8f7ac614d1b7cdc97a4284cfa710ab60f6c6.tar.gz perlweeklychallenge-club-f1ca8f7ac614d1b7cdc97a4284cfa710ab60f6c6.tar.bz2 perlweeklychallenge-club-f1ca8f7ac614d1b7cdc97a4284cfa710ab60f6c6.zip | |
Merge branch 'master' of https://github.com/manwar/perlweeklychallenge-club
Diffstat (limited to 'challenge-278/luca-ferrari/plpgsql')
| -rw-r--r-- | challenge-278/luca-ferrari/plpgsql/ch-1.sql | 24 | ||||
| -rw-r--r-- | challenge-278/luca-ferrari/plpgsql/ch-2.sql | 44 |
2 files changed, 68 insertions, 0 deletions
diff --git a/challenge-278/luca-ferrari/plpgsql/ch-1.sql b/challenge-278/luca-ferrari/plpgsql/ch-1.sql new file mode 100644 index 0000000000..dfbc14b996 --- /dev/null +++ b/challenge-278/luca-ferrari/plpgsql/ch-1.sql @@ -0,0 +1,24 @@ +-- +-- Perl Weekly Challenge 278 +-- Task 1 +-- See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-278> +-- + +CREATE SCHEMA IF NOT EXISTS pwc278; + +CREATE OR REPLACE FUNCTION +pwc278.task1_plpgsql( words text[] ) +RETURNS SETOF text +AS $CODE$ + + WITH numbered AS ( + SELECT substring( v::text from '^[a-zA-Z]+' ) as word + , substring( v::text from '\d+$' )::int as index + FROM unnest( words ) v + ) + SELECT word + FROM numbered + ORDER BY index + ; +$CODE$ +LANGUAGE sql; diff --git a/challenge-278/luca-ferrari/plpgsql/ch-2.sql b/challenge-278/luca-ferrari/plpgsql/ch-2.sql new file mode 100644 index 0000000000..b271d36da0 --- /dev/null +++ b/challenge-278/luca-ferrari/plpgsql/ch-2.sql @@ -0,0 +1,44 @@ +-- +-- Perl Weekly Challenge 278 +-- Task 2 +-- See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-278> +-- + +CREATE SCHEMA IF NOT EXISTS pwc278; + +CREATE OR REPLACE FUNCTION +pwc278.task2_plpgsql( w text, c char ) +RETURNS text +AS $CODE$ + + WITH letters( l, i ) AS ( + SELECT * + FROM regexp_split_to_table( w, '' ) + WITH ORDINALITY AS v( text, int ) + ) + , first_part AS ( + SELECT l + FROM letters + WHERE i <= position( c IN w ) + ORDER BY l + ) + , second_part AS ( + + SELECT l + FROM letters + WHERE i > position( c IN w ) + ORDER BY i + ) + , all_letters AS ( + SELECT l + FROM first_part + UNION ALL + SELECT l + FROM second_part + ) + SELECT string_agg( l, '' ) + FROM all_letters + ; + +$CODE$ +LANGUAGE sql; |
