
자식이 없는 대장균을 세대별로 찾아라.
[멸종위기의 대장균 찾기 (Level 5)]
🔑 핵심 포인트
RECURSIVE WITH를 이용해 세대를 나누어 주었다.
그 이후 NOT EXISTS를 통해 자식이 없는 대장균을 찾고,
GROUP BY를 통해 세대 별 자식이 없는 대장균 수를 최종적으로 찾아주었다.
WITH RECURSIVE CTE AS (
SELECT ID, 1 AS GENERATION, PARENT_ID
FROM ECOLI_DATA
WHERE PARENT_ID IS NULL
UNION ALL
SELECT E.ID, C.GENERATION + 1 AS GENERATION, E.PARENT_ID AS PARENT_ID
FROM ECOLI_DATA E JOIN CTE C
ON E.PARENT_ID = C.ID
)
SELECT COUNT(*) AS COUNT, P.GENERATION
FROM CTE P
WHERE NOT EXISTS (SELECT 1
FROM CTE C
WHERE C.PARENT_ID = P.ID)
GROUP BY P.GENERATION
ORDER BY P.GENERATION

프로그래머스 SQL의 신