Programing Language/SQL

프로그래머스_멸종위기의 대장균 찾기

Data-SSung 2025. 5. 21. 22:47
반응형

 

 

문제 point : 각 세대별 level을 정의하고, 원본 데이터에 id가 부모세대 인지를 확인하는 쿼리를 작성하기

-- id별 세대 level 정의
WITH RECURSIVE G AS (
	-- FIRST LEVEL
    SELECT ID, 1 as g_level
    FROM ECOLI_DATA
    WHERE PARENT_ID IS NULL
    
    UNION ALL
    
    -- ELSE
    SELECT A.ID, B.g_level+1 g_level
    FROM ECOLI_DATA A
    INNER JOIN G B
    ON A.PARENT_ID = B.ID
)
-- g ID(개체)별 부모세대 여부(자식 유무)
-- B.ID : ID별로 자식이 있으면 ROW가 추가되고, 없으면 NULL로 붙음
SELECT COUNT(*) as `COUNT`
	, A.g_level as GENERATION
FROM G A
LEFT JOIN ECOLI_DATA B
ON A.ID = B.PARENT_ID
WHERE B.ID IS NULL -- 세대별 자식이 없는 개체 수
GROUP BY A.g_level
;

 

 

반응형