diff options
| author | Luca Ferrari <fluca1978@gmail.com> | 2022-08-22 12:29:26 +0200 |
|---|---|---|
| committer | Luca Ferrari <fluca1978@gmail.com> | 2022-08-22 12:29:26 +0200 |
| commit | 8971a969add2550c91565aea416db5dad951ab93 (patch) | |
| tree | e3ee0e0cf8924c93250953d1d511179e65279d76 | |
| parent | bd411541890e1ad0685ce14b690007c8c911ea79 (diff) | |
| download | perlweeklychallenge-club-8971a969add2550c91565aea416db5dad951ab93.tar.gz perlweeklychallenge-club-8971a969add2550c91565aea416db5dad951ab93.tar.bz2 perlweeklychallenge-club-8971a969add2550c91565aea416db5dad951ab93.zip | |
Task 2 plpgsql
| -rw-r--r-- | challenge-179/luca-ferrari/postgresql/ch-2.sql | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/challenge-179/luca-ferrari/postgresql/ch-2.sql b/challenge-179/luca-ferrari/postgresql/ch-2.sql new file mode 100644 index 0000000000..10e3b13341 --- /dev/null +++ b/challenge-179/luca-ferrari/postgresql/ch-2.sql @@ -0,0 +1,57 @@ +-- Perl Weekly Challenge 179 +-- Task 2 + +CREATE SCHEMA IF NOT EXISTS pwc179; + +CREATE TABLE IF NOT EXISTS pwc179.symbols +( + v int PRIMARY KEY + , s text +); + +TRUNCATE pwc179.symbols; + +INSERT INTO pwc179.symbols +VALUES +( 0, '▁') +,(1, '▁') +,(2,'▂') +,(3, '▃') +,(4, '▄') +,(5, '▅') +,(6, '▆') +,(7,'▇') +,(8, '█') +,(9, '█'); + + +CREATE OR REPLACE FUNCTION +pwc179.task2_plpgsql( n int[] ) +RETURNS text +AS $CODE$ +DECLARE + c int; + t text; + tt text; + scale_max int; + scale_min int; + scale_count int; +BEGIN + t := ''; + + SELECT min(v), max(v), count(v) + INTO scale_min, scale_max, scale_count + FROM pwc179.symbols; + + FOREACH c IN ARRAY n LOOP + SELECT s + INTO tt + FROM pwc179.symbols + WHERE v = ( ( c - scale_min ) / ( scale_max - scale_min ) ); + t := t || tt; + END LOOP; + + RETURN t; +END +$CODE$ +LANGUAGE plpgsql; |
