aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;