링크
https://school.programmers.co.kr/learn/courses/30/lessons/301651
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제
정답: Not Exists를 활용한 방법
WITH RECURSIVE Generation AS (
SELECT ID, PARENT_ID, 1 AS GENERATION
FROM ECOLI_DATA
WHERE PARENT_ID IS NULL
UNION ALL
SELECT e.ID, e.PARENT_ID, g.GENERATION + 1
FROM ECOLI_DATA e
JOIN Generation g ON e.PARENT_ID = g.ID
)
SELECT COUNT(*) AS COUNT, GENERATION
FROM Generation g
WHERE NOT EXISTS (
SELECT 1
FROM ECOLI_DATA e
WHERE e.PARENT_ID = g.ID
)
GROUP BY GENERATION
ORDER BY GENERATION;
정답: Left join을 활용한 방법
WITH RECURSIVE Generation AS (
SELECT ID, PARENT_ID, 1 AS GENERATION
FROM ECOLI_DATA
WHERE PARENT_ID IS NULL
UNION ALL
SELECT e.ID, e.PARENT_ID, g.GENERATION + 1
FROM ECOLI_DATA e
JOIN Generation g ON e.PARENT_ID = g.ID
)
SELECT COUNT(*) AS COUNT, GENERATION
FROM Generation g
LEFT JOIN ECOLI_DATA e ON g.ID = e.PARENT_ID
WHERE e.ID IS NULL
GROUP BY GENERATION
ORDER BY GENERATION;
'[업무 지식] > MySQL' 카테고리의 다른 글
[QCC] Cohort-Analysis SQL (0) | 2025.01.13 |
---|---|
[QCC] Query Challenge Cycle (0) | 2025.01.03 |
[recursive] Print Prime Numbers (0) | 2024.12.13 |
[recursive] Draw The Triangle (0) | 2024.12.12 |
[날짜 그룹화] SQL Project Planning (0) | 2024.12.03 |