HackerRank Draw The Triangle 1
P(R)은 R개의 행에 그린 패턴이다.
P(5)가 아래와 같을 때, P(20)을 출력하는 쿼리를 작성하는 문제이다.
* * * * *
* * * *
* * *
* *
*
먼저 WITH RECURSIVE NUMBERS(N)을 통해 재귀적으로 1부터 20까지 숫자(행)를 생성한다.
SELECT 20은 재귀의 시작점으로, N = 20인 첫 행을 만든다.
UNION ALL SELECT N - 1 FROM NUMBERS WHERE N > 0은 기존 행의 N 값을 1씩 감소시키며 다음 행을 생성하고, N이 0이 되면 재귀가 중단된다.
이렇게 NUMBERS라는 임시 테이블을 만든 뒤, SELECT REPEAT('* ', N)을 통해 각 행의 N값만큼 * 를 반복 출력하여 P(20) 패턴을 출력할 수 있다.
WITH RECURSIVE NUMBERS(N) AS (
SELECT 20
UNION ALL
SELECT N - 1 FROM NUMBERS WHERE N > 0
)
SELECT REPEAT('* ', N)
FROM NUMBERS;