프로그래머스/쿼리
[mysql] SELECT - 특정 세대의 대장균 찾기
have a good time
2025. 3. 19. 12:59
재귀 이용
WITH RECURSIVE EcoliHierarchy AS (
-- 1세대 대장균: PARENT_ID가 NULL인 개체
SELECT ID, PARENT_ID, 1 AS generation
FROM ECOLI_DATA
WHERE PARENT_ID IS NULL
UNION ALL
-- 2세대 대장균: 부모가 1세대인 개체
SELECT e.ID, e.PARENT_ID, eh.generation + 1
FROM ECOLI_DATA e
JOIN EcoliHierarchy eh ON e.PARENT_ID = eh.ID
WHERE eh.generation = 1
UNION ALL
-- 3세대 대장균: 부모가 2세대인 개체
SELECT e.ID, e.PARENT_ID, eh.generation + 1
FROM ECOLI_DATA e
JOIN EcoliHierarchy eh ON e.PARENT_ID = eh.ID
WHERE eh.generation = 2
)
-- 3세대 대장균의 ID 출력
SELECT ID
FROM EcoliHierarchy
WHERE generation = 3
ORDER BY ID;