Lv4. 특정 세대의 대장균 찾기 (MySQL)
링크: https://school.programmers.co.kr/learn/courses/30/lessons/301650
내가 작성한 코드
-- 풀이1 (JOIN)
SELECT E3.ID
FROM ECOLI_DATA E1
JOIN ECOLI_DATA E2
ON E1.ID = E2.PARENT_ID
JOIN ECOLI_DATA E3
ON E2.ID = E3.PARENT_ID
WHERE E1.PARENT_ID IS NULL
ORDER BY E3.ID;
-- 풀이2 (IN)
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;
Oracle
-- Oracle
-- 계층형 쿼리 (CONNECT BY)
SELECT ID
FROM ECOLI_DATA
WHERE LEVEL = 3 -- 계층 구조를 만든 후 3세대에 해당하는 데이터만 골라냄
START WITH PARENT_ID IS NULL -- 부모ID가 없는 최상위 개체부터 탐색을 시작하겠다는 의미
CONNECT BY PRIOR ID = PARENT_ID -- 이전 단계(PRIOR)의 ID와 현재 단계의 PARENT_ID를 연결
ORDER BY ID;
PRIOR의 위치에 따라 탐색 방향이 달라진다
- PRIOR ID = PARENT_ID
- 순방향 (부모→자식)
- ID = PRIOR PARENT_ID
- 역방향 (자식 →부모)
'코딩테스트' 카테고리의 다른 글
| [26.02.13 코테(MySQL)]-조건에 맞는 개발자 찾기 (0) | 2026.02.13 |
|---|---|
| [26.02.12 코테(MySQL)]-대장균의 크기에 따라 분류하기 1 (0) | 2026.02.12 |
| [26.02.10 코테(MySQL)]-부서별 평균 연봉 조회하기 (0) | 2026.02.10 |
| [02.06 코테(MySQL/Oracle)]-5월 식품들의 총매출 조회하기 (0) | 2026.02.06 |
| [26.02.04 코테(MySQL/Oracle)]-보호소에서 중성화한 동물 (0) | 2026.02.04 |