DA Study/TIL

[TIL] 재귀 쿼리 (Recursive CTE) # MySQL # SQL

harrym8n 2025. 4. 6. 22:31

HackerRank Intermediate - Draw The Triangle 2
👉 문제 바로가기(HackerRank)

WITH RECURSIVE cte AS
(
  SELECT 1 AS N
  UNION ALL
  SELECT (N + 1) AS N FROM cte WHERE N < 20
)

SELECT REPEAT('* ',N) FROM cte
ORDER BY N;

[문제 상황]

  • '*'을 다음줄로 넘어갈 때 하나씩 늘려 삼각형 모양으로 출력해야 한다.
  • 이를 위해 매 줄 SELECT REPEAT('*', n); 을 사용해서 출력해야 한다.

[해결]

  • 파이썬의 반복문처럼 매 줄 하나씩 개수를 하나씩 더해서 늘려주는 구문을 작성한다.
  • 재귀 쿼리(Recursive CTE)을 사용한다.
    • Anchor - SELECT 1 AS N
    • 반복 조건문 - SELECT (N + 1) AS N FROM cte WHERE N < 20

[회고]

  • 재귀쿼리를 활용하며 재귀쿼리 구조에 대해 배웠다.
  • WITH ~ AS로 재귀 쿼리 정의 - Anchor 부분으로 초기값 설정 - UNION ALL로 반복 조건과 연결 - 반복 조건문