aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Ferrari <fluca1978@gmail.com>2022-01-03 18:50:31 +0100
committerLuca Ferrari <fluca1978@gmail.com>2022-01-03 18:50:31 +0100
commit5e7d8c8bc6f4d63a8cf3ad993b478492621bfb0c (patch)
tree2a6ec8a7266f221b6acfed13cbb28ed2fead9d1f
parent03b7084ad8cf90efa0d3b4a3c2066a87b9db8ae1 (diff)
downloadperlweeklychallenge-club-5e7d8c8bc6f4d63a8cf3ad993b478492621bfb0c.tar.gz
perlweeklychallenge-club-5e7d8c8bc6f4d63a8cf3ad993b478492621bfb0c.tar.bz2
perlweeklychallenge-club-5e7d8c8bc6f4d63a8cf3ad993b478492621bfb0c.zip
Task 1 done in PostgreSQL
-rw-r--r--challenge-146/luca-ferrari/postgresql/ch-1.sql32
1 files changed, 32 insertions, 0 deletions
diff --git a/challenge-146/luca-ferrari/postgresql/ch-1.sql b/challenge-146/luca-ferrari/postgresql/ch-1.sql
new file mode 100644
index 0000000000..766cf944f0
--- /dev/null
+++ b/challenge-146/luca-ferrari/postgresql/ch-1.sql
@@ -0,0 +1,32 @@
+CREATE OR REPLACE FUNCTION
+f_is_prime( val int )
+RETURNS bool
+AS $CODE$
+DECLARE
+ i int;
+BEGIN
+ IF val <= 0 THEN
+ RAISE EXCEPTION 'Cannot use a number less than 1!';
+ END IF;
+
+ FOR i IN 2 .. ( val - 1 ) LOOP
+ IF val % i = 0 THEN
+ RETURN false;
+ END IF;
+ END LOOP;
+
+ RETURN true;
+END
+$CODE$
+LANGUAGE plpgsql;
+
+
+WITH primes AS (
+SELECT n as needle, row_number() OVER( PARTITION BY f_is_prime( n ) ) as idx
+FROM generate_series( 1, 10000 ) n
+WHERE f_is_prime( n )
+ORDER BY n
+)
+SELECT *
+FROM primes
+WHERE idx = 1001;