- 문제설명
- 문제
- 풀이
👉 ECOLI_DATA테이블이 아래와 같을 때 개체 ID별 자식의 수를 출력하는 문제이므로
1. PARENT_ID를 기준으로 그룹화하여 자식 개체의 개수 세기
SELECT PARENT_ID, COUNT(*) AS CHILD_COUNT
FROM ECOLI_DATA
GROUP BY PARENT_ID
2. ECOLI_DATA 테이블과 위에서 만든 서브쿼리를 LEFT JOIN함
SELECT A.ID, B.CHILD_COUNT
FROM ECOLI_DATA A
LEFT JOIN (SELECT PARENT_ID, COUNT(*) AS CHILD_COUNT
FROM ECOLI_DATA
GROUP BY PARENT_ID) B
ON A.ID = B.PARENT_ID
ORDER BY A.ID;
👉 A.ID = B.PARENT_ID 를 기준으로 LEFT JOIN하면 각 ID별로 자식의 수가 매칭됨
단, 자식이 없는 ID 3, 5, 6은 NULL값을 나옴
3. IFNULL()을 이용하여 NULL값을 0으로 대체(MySQL에서만 사용가능)
SELECT A.ID, IFNULL(B.CHILD_COUNT, 0) AS CHILD_COUNT
FROM ECOLI_DATA A
LEFT JOIN (SELECT PARENT_ID, COUNT(*) AS CHILD_COUNT
FROM ECOLI_DATA
GROUP BY PARENT_ID)B
ON A.ID = B.PARENT_ID
ORDER BY ID;
📌 IFNULL() 대신 COALESCE()도 사용 가능
SELECT A.ID, COALESCE(B.CHILD_COUNT, 0) AS CHILD_COUNT
FROM ECOLI_DATA A
LEFT JOIN (SELECT PARENT_ID, COUNT(*) AS CHILD_COUNT
FROM ECOLI_DATA
GROUP BY PARENT_ID) B
ON A.ID = B.PARENT_ID
ORDER BY A.ID;
EX) COALESCE(NULL, 'A', 'B') : 왼쪽부터 차례로 확인하며 첫 번째 NULL이 아닌 값을 반환
👉 만약, COALESCE(NULL, NULL , NULL ) 모든 값이 NULL이라면 NULL을 반환
- 실행결과
'빅데이터 공부 > SQL' 카테고리의 다른 글
[프로그래머스 / MySQL / Lv.4 그룹별 조건에 맞는 식당 목록 출력하기] (0) | 2025.03.18 |
---|---|
[프로그래머스 / MySQL / Lv.3 업그레이드 할 수 없는 아이템 구하기] (0) | 2025.03.17 |
[프로그래머스 / MySQL / Lv.4 연간 평가점수에 해당하는 평가 등급 및 성과금 조회하기] (0) | 2025.03.13 |
[프로그래머스 / MySQL / Lv.3 특정 조건을 만족하는 물고기별 수와 최대 길이 구하기] (0) | 2025.03.12 |
[프로그래머스 / MySQL / Lv.4 주문량이 많은 아이스크림들 조회하기] (0) | 2025.03.11 |