개발/SQL

프로그래머스SQL_서울에 위치한 식당 목록 출력하기

송디 2024. 5. 7. 11:41

출처 : 프로그래머

 

 

■ 사용 문법 

WITH RECURSIVE

 

■ 사용 방법

WITH RECURSIVE를 이용해 세대 별로 분류해준다. 이후 PARENT_ID에 없는 ID를 분류해주고, GROUP BY로 세대 별로 나누어 줘서 갯수를 구하면 된다. 

 

■ 코드

-- 코드를 작성해주세요
WITH RECURSIVE GEN_DATA AS (
    SELECT ID, PARENT_ID,
        1 AS GEN
    FROM ECOLI_DATA
    WHERE PARENT_ID IS NULL
    UNION ALL
    SELECT A.ID,
           A.PARENT_ID,
           (GEN + 1) AS GEN
    FROM ECOLI_DATA AS A
    INNER JOIN GEN_DATA g ON A.PARENT_ID = g.ID
)  
SELECT COUNT(*) AS COUNT , GEN AS GENERATION
FROM GEN_DATA 
WHERE ID not IN (SELECT PARENT_ID 
FROM ECOLI_DATA
WHERE PARENT_ID IS NOT NULL )
GROUP BY GEN
ORDER BY GEN
728x90