프로그래머스/My SQL

특정 세대의 대장균 찾기

싱싱한복초이 2024. 12. 29. 22:05

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

 

프로그래머스

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

programmers.co.kr

[문제]

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

[나의 풀이]

SELECT ID
FROM ECOLI_DATA
WHERE PARENT_ID IN (
                    SELECT ID
                    FROM ECOLI_DATA
                    WHERE PARENT_ID IN (
                                        SELECT ID
                                        FROM ECOLI_DATA
                                        WHERE PARENT_ID IS NULL))
ORDER BY ID;

 

[다른 풀이]

1) WITH절을 이용한 경우

WITH FirstGen AS (
    SELECT ID
    FROM ECOLI_DATA
    WHERE PARENT_ID IS NULL
),
SecondGen AS (
    SELECT ID
    FROM ECOLI_DATA
    WHERE PARENT_ID IN (SELECT ID FROM FirstGen)
)
SELECT ID
FROM ECOLI_DATA
WHERE PARENT_ID IN (SELECT ID FROM SecondGen)
ORDER BY ID;

 

2) JOIN을 이용한 경우

SELECT ED3.ID
FROM ECOLI_DATA AS ED1
INNER JOIN ECOLI_DATA AS ED2
ON ED1.ID = ED2.PARENT_ID AND ED1.PARENT_ID IS NULL
INNER JOIN ECOLI_DATA AS ED3
ON ED3.PARENT_ID = ED2.ID;

-출처

https://passionfruit200.tistory.com/1326

 

[SQL][프로그래머스]특정 세대의 대장균 찾기 - SUBQUERY + IN CTE MYSQL

https://school.programmers.co.kr/learn/courses/30/lessons/301650 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞

passionfruit200.tistory.com