카테고리 없음

[SQL 문제 풀이] 프로그래머스 '멸종위기 대장균 찾기'

머니기어 2024. 9. 29. 18:05
반응형

 

WITH RECURSIVE CTE (GENERATION, ID) AS (
  -- 초기조건
  SELECT 1,ID 
  FROM ECOLI_DATA 
  WHERE PARENT_ID IS NULL 
  
  UNION ALL 
    -- 아래부터 반복 결과가 없으면 종료
  SELECT 
    GENERATION + 1, 
    e.ID 
  FROM 
    ECOLI_DATA e 
    -- 자식이 하나도 없는 마지막 세대일 경우 결과가 없음
    JOIN CTE c ON e.PARENT_ID = c.ID 
) 
SELECT 
  COUNT(*) AS COUNT, 
  GENERATION 
FROM CTE 
WHERE 
  ID NOT IN (
    SELECT PARENT_ID 
    FROM ECOLI_DATA 
    WHERE PARENT_ID IS NOT NULL -- NULL을 비교 집합에서 제외
  ) 
GROUP BY GENERATION 
ORDER BY GENERATION ASC
반응형