본문 바로가기

TIL 통합/SQL

[프로그래머스] SELECT - 멸종위기의 대장균 찾기(RECURISVE)

https://school.programmers.co.kr/learn/courses/30/lessons/301651

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

문제를 한참봐도 어떻게  풀어야할 지 감이 안와서 해설을 보니 재귀문제.

 

너무 오랜만에 보는 형식이라 일단은 거의 복붙 수준으로 작업했다.

두고두고 복습해야하는 부분인듯   

WITH RECURSIVE TMP AS
    (
        SELECT       ID
                    ,PARENT_ID
                    ,1 AS GENERATION
        FROM         ECOLI_DATA
        WHERE        PARENT_ID IS NULL
        UNION
        SELECT       D.ID
                    ,D.PARENT_ID
                    ,(T.GENERATION + 1) AS GENERATION
        FROM         ECOLI_DATA D, TMP T 
        WHERE        D.PARENT_ID = T.ID
    )

SELECT       COUNT(ID) AS COUNT
            ,GENERATION
FROM         TMP
WHERE        ID NOT IN (
                            SELECT       PARENT_ID
                            FROM         TMP
                            WHERE        PARENT_ID IS NOT NULL
                        )
GROUP BY     GENERATION