출처
문제
3세대의 대장균의 ID(ID) 를 출력하는 SQL 문을 작성해주세요. 이때 결과는 대장균의 ID 에 대해 오름차순 정렬해주세요.
문제에 대한 해석
조회 : 3세대의 대장쿤 찾기
정렬 : 3세대 대장균의 ID 오름차순
풀이(MYSQL)
with gen1 as (
select id
from ECOLI_DATA
where parent_id is null
), -- 1세대 부모 아이디 테이블 : 부모 아이디가 없을 경우
gen2 as(
select id
from ECOLI_DATA
where parent_id in(select id
from gen1)-- 2세대 부모아이디 테이블: 자신의 부모가 1세대 아이디일 경우
)
select id
from ECOLI_DATA
where parent_id in(select id
from gen2)
order by id
풀이(ORACLE) > 문제에서는 ORACLE 버전이 없어서 상상으로
select id
from ECOLI_DATA
start with parnet_id is nulll -- parnet_id is null인 것을 시작으로
cinnect by prior id = parent_id -- id의 부모는 parent_id
where LEVEL = 3 -- 부모레벨을 1을 기준으로 3세대 일때
order by id
작동순서
💡SQL 실행 순서는 From -> Where -> Group by -> Having -> Select -> Order by ->결과반환
- WITH절1 : ECOLI_DATA데이블에서 parent_id가 없는 id를 조회하여 1세대 부모 id에 대한 테이블을 만든다 (gen1)
- WITH절2: COLI_DATA데이블에서 parent_id가 gen1에 있는 경우를 조회하여 2세대 부모 id에 대한 테이블을 만든다 (gen2)
- FROM 절: ECOLI_DATA데이블에서
- WHERE 절: parent_id가 gen2에 있는 경우를 필터링 하여
- SELECT 절: id를 조회한다
- ORDER BY 절: id 오름차순
'문제풀이 > SQL(My sql)' 카테고리의 다른 글
[문제풀이] 프로그래머스 - 보호소에서 중성화한 동물 (0) | 2024.06.25 |
---|---|
[문제풀이] 프로그래머스 - 물고기 종류 별 대어 찾기 (0) | 2024.06.25 |
[문제풀이] 프로그래머스 - 연간 평가점수에 해당하는 평가 등급 (0) | 2024.06.24 |
[문제풀이] Hacker Rank - Draw The Triangle 1, 2 (0) | 2024.06.20 |
[문제풀이] Hacker Rank - Symmetric Pairs (0) | 2024.06.19 |