
Lv. 4 / SELECT
이 전에 풀었던 WITH RECURSIVE를 이용하면 간단하게 풀 수 있다.
재귀쿼리를 통해 GENERATION을 계산하고 GENERATION이 3이라는 조건을 달아주면 된다.
/*
특정 세대의 대장균 찾기
SELECT
*/
WITH RECURSIVE GEN AS(
SELECT ID, PARENT_ID, 1 GENERATION
FROM ECOLI_DATA
WHERE PARENT_ID IS NULL
UNION ALL
SELECT T2.ID, T2.PARENT_ID, GENERATION+1 GENERATION
FROM GEN T1 JOIN ECOLI_DATA T2
ON T1.ID = T2.PARENT_ID
)
SELECT ID
FROM GEN
WHERE GENERATION = 3
ORDER BY 1;
이전에 풀었던 문제랑 딱 봐도 흐름이 같아서 생각하는데는 오래 걸리지 않았다.
근데 그새 또 가물가물해져서 안보고 다시 재귀쿼리를 작성해보는 복습시간 같았달까.