diff options
Diffstat (limited to 'challenge-261/luca-ferrari/plpgsql/ch-1.sql')
| -rw-r--r-- | challenge-261/luca-ferrari/plpgsql/ch-1.sql | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/challenge-261/luca-ferrari/plpgsql/ch-1.sql b/challenge-261/luca-ferrari/plpgsql/ch-1.sql new file mode 100644 index 0000000000..d12067ac9a --- /dev/null +++ b/challenge-261/luca-ferrari/plpgsql/ch-1.sql @@ -0,0 +1,27 @@ +-- +-- Perl Weekly Challenge 261 +-- Task 1 +-- See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-261> +-- + +CREATE SCHEMA IF NOT EXISTS pwc261; + +CREATE OR REPLACE FUNCTION +pwc261.task1_plpgsql( nums int[] ) +RETURNS int +AS $CODE$ + +WITH sum_numbers AS ( SELECT SUM( n::int ) AS y FROM unnest( nums ) n ) + , digits AS ( SELECT regexp_split_to_table( n::text, '' ) d + FROM unnest( nums ) n ) + , sum_digits AS ( SELECT SUM( d::int ) AS x FROM digits d ) + , result AS ( SELECT y - x AS r + FROM sum_numbers, sum_digits ) + + SELECT CASE WHEN r > 0 THEN r + ELSE r * -1 + END + + FROM result; +$CODE$ +LANGUAGE sql; |
