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
;
반응형