0
0
SQLquery~20 mins

Recursive CTE for series generation in SQL - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Recursive CTE Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
query_result
intermediate
2:00remaining
Output of a Recursive CTE Generating Numbers 1 to 5
What is the output of this SQL query using a recursive CTE to generate numbers from 1 to 5?
SQL
WITH RECURSIVE numbers AS (
  SELECT 1 AS num
  UNION ALL
  SELECT num + 1 FROM numbers WHERE num < 5
)
SELECT * FROM numbers ORDER BY num;
ASyntaxError
B[{"num":1},{"num":2},{"num":3},{"num":4}]
C[{"num":0},{"num":1},{"num":2},{"num":3},{"num":4},{"num":5}]
D[{"num":1},{"num":2},{"num":3},{"num":4},{"num":5}]
Attempts:
2 left
💡 Hint
Look at the base case and the stopping condition in the recursive part.
📝 Syntax
intermediate
2:00remaining
Identify the Syntax Error in Recursive CTE
Which option contains a syntax error in this recursive CTE that generates numbers from 1 to 3?
SQL
WITH RECURSIVE nums AS (
  SELECT 1 AS n
  UNION ALL
  SELECT n + 1 FROM nums WHERE n < 3
)
SELECT * FROM nums;
A
WITH nums AS (
  SELECT 1 AS n
  UNION ALL
  SELECT n + 1 FROM nums WHERE n &lt; 3
)
SELECT * FROM nums;
B
WITH RECURSIVE nums AS (
  SELECT 1 AS n
  UNION ALL
  SELECT n + 1 FROM nums WHERE n &lt; 3
)
SELECT * FROM nums;
C
WITH RECURSIVE nums AS (
  SELECT 1 AS n
  UNION ALL
  SELECT n + 1 FROM nums WHERE n &lt;= 3
)
SELECT * FROM nums;
D
WITH RECURSIVE nums AS (
  SELECT 1 AS n
  UNION ALL
  SELECT n + 1 FROM nums WHERE n &lt; 3
)
SELECT n FROM nums;
Attempts:
2 left
💡 Hint
Check if the keyword RECURSIVE is required for recursive CTEs.
optimization
advanced
3:00remaining
Optimizing Recursive CTE for Large Series
Which option is the most efficient way to generate numbers from 1 to 1000 using a recursive CTE?
A
WITH nums AS (
  SELECT 1 AS n
  UNION ALL
  SELECT n + 1 FROM nums WHERE n &lt; 1000
)
SELECT * FROM nums;
B
WITH RECURSIVE nums AS (
  SELECT 1 AS n
  UNION ALL
  SELECT n + 1 FROM nums WHERE n &lt;= 1000
)
SELECT * FROM nums;
C
WITH RECURSIVE nums AS (
  SELECT 1 AS n
  UNION ALL
  SELECT n + 1 FROM nums WHERE n &lt; 1000
)
SELECT * FROM nums;
D
WITH RECURSIVE nums AS (
  SELECT 1 AS n
  UNION ALL
  SELECT n + 10 FROM nums WHERE n &lt; 1000
)
SELECT * FROM nums WHERE n &lt;= 1000;
Attempts:
2 left
💡 Hint
Check the stopping condition and whether the CTE is recursive.
🔧 Debug
advanced
2:00remaining
Why Does This Recursive CTE Cause an Infinite Loop?
Consider this recursive CTE: WITH RECURSIVE cte AS ( SELECT 1 AS val UNION ALL SELECT val + 1 FROM cte ) SELECT * FROM cte WHERE val <= 5; Why does this query cause an infinite loop or error?
ABecause the recursive part has no stopping condition in the WHERE clause.
BBecause the base case SELECT is missing a column alias.
CBecause the CTE is missing the RECURSIVE keyword.
DBecause the final SELECT filters values incorrectly.
Attempts:
2 left
💡 Hint
Look at the recursive SELECT and its WHERE clause.
🧠 Conceptual
expert
2:30remaining
Understanding Recursive CTE Execution Order
In a recursive CTE, which part executes first and how does the recursion proceed?
AThe recursive member executes first to generate all rows, then the anchor member filters them.
BThe anchor member executes first to produce initial rows, then the recursive member executes repeatedly using previous results until no new rows are produced.
CBoth anchor and recursive members execute simultaneously and merge results at the end.
DThe recursive member executes once, then the anchor member executes repeatedly.
Attempts:
2 left
💡 Hint
Think about how recursion builds results step by step.