💻 프로그래밍/프로그래머스

프로그래머스 - 특정 세대의 대장균 찾기

ssoniya 2025. 2. 11. 16:11

 

 


 

* WITH는 SQL에서 일시적인 테이블을 만드는 기능

 

WITH NAME AS (
    SELECT ...
    FROM 테이블명 
    WHERE 조건
)


SELECT * 

FROM CTE_NAME;

 


 

< 문제풀이 >

 

1️⃣ 1세대 찾기

-PARENT_IDNULL인 개체는 1세대

 

2️⃣ 2세대 찾기

-1세대 개체의 ID를 PARENT_ID로 가지는 개체가 2세대

 

3️⃣ 3세대 찾기

-2세대 개체의 ID를 PARENT_ID로 가지는 개체가 3세대

-3세대를 찾았으니 Order By 로 오름차순 정렬 

WITH 1ST_GEN AS(
SELECT ID
    FROM ECOLI_DATA
    WHERE PARENT_ID IS NULL),

2ND_GEN AS(
SELECT ECOLI_DATA.ID, ECOLI_DATA.PARENT_ID
    FROM ECOLI_DATA JOIN 1ST_GEN ON ECOLI_DATA.PARENT_ID = 1ST_GEN.ID
)

SELECT ECOLI_DATA.ID
FROM ECOLI_DATA JOIN 2ND_GEN ON ECOLI_DATA.PARENT_ID = 2ND_GEN.ID
ORDER BY ECOLI_DATA.ID ASC;