본문 바로가기
프로그래머스/lv4

[프로그래머스 lv4] 특정 세대의 대장균 찾기

반응형

https://school.programmers.co.kr/learn/courses/30/lessons/301650

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

문제 내용

3세대의 대장균의 ID(ID) 를 출력하는 SQL 문을 작성해주세요. 이때 결과는 대장균의 ID 에 대해 오름차순 정렬해주세요.

 

 

해결 방법

ECOLI_DATA 에는 부모 아이디, 자기 자신의 아이디가 있습니다.

1. 따라서 부모 아이디가 NULL 인 경우는 1세대 

2. 부모 아이디가 1번인 애들은 2세대

3. 부모 아이디가 2번인 애들은 3세대로 알 수 있습니다.

따라서 SELECT를 서브쿼리로 해결하거나 JOIN 을 이용해 해결할 수 있습니다,

 

 

해결 쿼리문

-- 코드를 작성해주세요

SELECT D.ID
FROM ECOLI_DATA D
INNER JOIN (
        SELECT A.ID
        FROM ECOLI_DATA A
        INNER JOIN (
                SELECT ID
                FROM ECOLI_DATA
                WHERE PARENT_ID IS NULL
        ) AS B ON A.PARENT_ID = B.ID
    ) AS C ON D.PARENT_ID = C.ID
ORDER BY D.ID ASC;