반응형
WITH RECURSIVE CTE (GENERATION, ID) AS (
-- 초기조건
SELECT 1,ID
FROM ECOLI_DATA
WHERE PARENT_ID IS NULL
UNION ALL
-- 아래부터 반복 결과가 없으면 종료
SELECT
GENERATION + 1,
e.ID
FROM
ECOLI_DATA e
-- 자식이 하나도 없는 마지막 세대일 경우 결과가 없음
JOIN CTE c ON e.PARENT_ID = c.ID
)
SELECT
COUNT(*) AS COUNT,
GENERATION
FROM CTE
WHERE
ID NOT IN (
SELECT PARENT_ID
FROM ECOLI_DATA
WHERE PARENT_ID IS NOT NULL -- NULL을 비교 집합에서 제외
)
GROUP BY GENERATION
ORDER BY GENERATION ASC
반응형