본문 바로가기
🗄️ DB_이야기/# ⚡SQL

🚀[SQL 알고리즘 문제 풀이] Programmers : 대장균들의 자식의 수 구하기(SELECT)

by gwon_s 2026. 4. 15.

👇 대장균들의 자식의 수 구하기

 

프로그래머스

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)를 찾는 역할
  • 실무에서도 카테고리(상위/하위), 조직도(팀장/팀원), 댓글(원글/답글) 구조는 모두 이 '대장균 모델'과 동일하게 계층형 데이터 설계입니다.