👇 대장균들의 자식의 수 구하기
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
🔓 문제 설명
대장균 개체의 ID(ID)와 자식의 수(CHILD_COUNT)를 출력하는 SQL 문을 작성해주세요. 자식이 없다면 자식의 수는 0으로 출력해주세요.
이때 결과는 개체의 ID 에 대해 오름차순 정렬해주세요.
예시 문제 데이터(ECOLI_DATA)
| ID | PARENT_ID | SIZE_OF_COLONY | DIFFERENTIATION_DATE | GENOTYPE |
| 1 | NULL | 10 | 2019-01-01 | 5 |
| 2 | NULL | 2 | 2019-01-01 | 3 |
| 3 | 1 | 100 | 2020-01-01 | 4 |
| 4 | 2 | 17 | 2020-01-01 | 4 |
| 5 | 2 | 10 | 2020-01-01 | 6 |
⚡SQL Query
스칼라 서브쿼리 풀이
SELECT
ID,
(SELECT COUNT(*) FROM ECOLI_DATA WHERE PARENT_ID = E.ID) AS CHILD_COUNT
FROM ECOLI_DATA E
ORDER BY ID ASC;
LEFT JOIN 풀이
SELECT
A.ID,
COUNT(B.ID) AS CHILD_COUNT
FROM ECOLI_DATA A
LEFT JOIN ECOLI_DATA B ON A.ID = B.PARENT_ID
GROUP BY A.ID
ORDER BY A.ID ASC;
🔎 풀이 설명
| A.ID (부모 후보) | B.ID (나를 부모로 둔 자식들) | CHILD_COUNT (개수) |
| 1 | 3 | 1 |
| 2 | 4, 5 | 2 |
| 3 | NULL (자식 없음) | 0 |
| 4 | 6 | 1 |
| 5 | NULL (자식 없음) | 0 |
| 6 | NULL (자식 없음) | 0 |
1. 테이블 매칭: LEFT JOIN 또는 서브쿼리 등을 사용하여 부모-자식 관계를 매칭해줍니다.
2. 자식 컬럼 카운트
💡인사이트
1. 부모-자식 관계
- 메인 쿼리(E): "부모"의 입장에서 나를 증명하는 역할.
- 서브 쿼리: "자식"의 목록에서 부모(E.ID)를 찾는 역할
- 실무에서도 카테고리(상위/하위), 조직도(팀장/팀원), 댓글(원글/답글) 구조는 모두 이 '대장균 모델'과 동일하게 계층형 데이터 설계입니다.
'🗄️ DB_이야기 > # ⚡SQL' 카테고리의 다른 글
| 🚀[SQL 알고리즘 문제 풀이] Programmers : 특정 형질을 가지는 대장균 찾기(SELECT) (0) | 2026.04.16 |
|---|---|
| 🚀[SQL 알고리즘 문제 풀이] Programmers : 대장균의 크기에 따라 분류하기 1(SELECT) (0) | 2026.04.16 |
| 🚀[SQL 알고리즘 문제 풀이] Programmers : 조건에 맞는 개발자 찾기(SELECT) (1) | 2026.04.15 |
| 🚀[SQL 알고리즘 문제 풀이] Programmers : Python 개발자 찾기(SELECT) (0) | 2026.04.15 |
| 🚀[SQL 알고리즘 문제 풀이] Programmers : 업그레이드 된 아이템 구하기(SELECT) (0) | 2026.04.15 |