개발/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