프로그래머스 Lv4 특정 세대의 대장균 찾기(MySQL)

vvo_ter·2024년 10월 5일
0

daily-sql

목록 보기
6/6
post-custom-banner

💻 문제

코딩테스트 연습 > SELECT > 특정 세대의 대장균 찾기

문제 설명

3세대의 대장균의 ID를 오름차순으로 정렬하기ㄹ

테이블 설명

parent_id와 id로 이루어져있고 parent_id가 NULL이면 1세대를 의미한다

🔐 풀이

아이디어

테이블을 3번 조인하거나 두 번의 서브쿼리로 parent_id와 id를 비교한다.

👉 제출 코드

방법 1: 서브쿼리

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 asc

방법 2: recursive

with recursive tmp as (
    select id, 1 as gen
    from ecoli_data
    where parent_id is null
    union all
    select e.id, tmp.gen+1 as gen
    from tmp join ecoli_data e
    on e.parent_id = tmp.id
)

select id
from tmp
where gen = 3
order by 1 asc
profile
's Coding Memory
post-custom-banner

0개의 댓글