[Programmers/mysql] 301650: 특정 세대의 대장균 찾기

songeunm·2024년 9월 8일

PS - sql

목록 보기
8/58
post-thumbnail

문제

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;

마무리

이전에 풀었던 문제랑 딱 봐도 흐름이 같아서 생각하는데는 오래 걸리지 않았다.
근데 그새 또 가물가물해져서 안보고 다시 재귀쿼리를 작성해보는 복습시간 같았달까.

profile
데굴데굴 구르는 개발자 지망생

0개의 댓글