오늘의 문제풀이 ~ ^ㅁ^
프로그래머스 코딩테스트 연습에 있는
<대장균들의 자식의 수 구하기> 입니다.
이 문제에서 포인트는
자기 테이블을 LEFT JOIN으로 조인하고
조건에 맞는 개체 수를 세서 COUNT 함수를 응용할 줄 알아야합니다.
https://school.programmers.co.kr/learn/courses/30/lessons/299305
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
🧩 문제 설명

이번 문제는 실험실에서 배양한 대장균 개체들 간의 부모-자식 관계를 분석하는 SQL 문제입니다.
각 대장균 개체 가 몇 개의 자식을 가지고 있는지를 구해야 합니다.
📋 테이블 설명
테이블 이름: ECOLI_DATA
ID | 대장균 고유 ID |
PARENT_ID | 부모 대장균 ID (NULL이면 최초 개체) |
SIZE_OF_COLONY | 개체의 크기 |
DIFFERENTIATION_DATE | 분화된 날짜 |
GENOTYPE | 형질 번호 |
✅ 요구사항
- 모든 대장균 개체의 ID에 대해,
- 자식 개체 수(CHILD_COUNT)를 구해야 함
- 자식이 없는 경우에도 0으로 표시되어야 함
- 결과는 ID 기준으로 오름차순 정렬
💡 문제 접근 방법
1. 부모-자식 관계를 표현하기 위해 자기 자신과 JOIN
- 자식의 PARENT_ID는 부모의 ID와 같음
- E1은 모든 개체, E2는 자식 개체라고 할 때,
→ 즉, E1.ID = E2.PARENT_ID로 조인
2. 모든 개체가 결과에 있어야 하므로 LEFT JOIN
- 자식이 없는 경우도 포함해야 하니까, LEFT JOIN으로 조인
3. 자식 수 세기: COUNT(E2.ID)
- COUNT는 NULL을 세지 않음
→ 자식이 없는 경우 자동으로 0이 됨
✅ 최종 SQL 코드
SELECT E1.ID
, COUNT(E2.ID) AS CHILD_COUNT
FROM ECOLI_DATA E1
LEFT JOIN ECOLI_DATA E2 ON E1.ID = E2.PARENT_ID
GROUP BY 1
'SQL' 카테고리의 다른 글
[프로그래머스/MySQL] 서울에 위치한 식당 목록 출력하기 (2) | 2025.04.10 |
---|---|
[TIL] Leetcode SQL 50 오답노트 - 이동평균 구할 때 쉬운 window 함수 (0) | 2025.03.05 |
RFM 고객 세분화 분석이란? + The look ecommerce 데이터로 SQL 구현, Tableau 시각화까지 (1) | 2024.03.22 |
Streamlit과 BigQuery 연동 (with Google Cloud Platfrom) (1) | 2023.10.18 |
PostgreSQL 기초 실습 및 개념 (0) | 2023.10.13 |