SQL/SELECT

[프로그래머스 SQL] Lv.4 - 특정 세대의 대장균 찾기

이런개발 2025. 3. 6. 07:54

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

 

프로그래머스

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

programmers.co.kr

 

문제 풀이

  1. 3세대 대장균은 2세대 대장균을 부모로 하고, 2세대 대장균은 1세대 대장균을 부모로 한다. 그리고 1세대 대장균은 부모가 없다.
  2. 즉 서브쿼리로 1세대 대장균을 찾고, 또 서브쿼리로 2세대 대장균을 찾은 다음, 2세대 대장균을 부모로 갖는 행을 필터링한다.
  3. 대장균 ID를 기준으로 오름차순 정렬한다.
SELECT ID   # 3세대 대장균
FROM ECOLI_DATA
WHERE PARENT_ID IN 
                (SELECT ID  # 2세대 대장균
                 FROM ECOLI_DATA
                 WHERE PARENT_ID IN 
                                 (SELECT ID # 1세대 대장균
                                  FROM ECOLI_DATA
                                  WHERE ISNULL(PARENT_ID)
                                 )
                )
ORDER BY 1