https://school.programmers.co.kr/learn/courses/30/lessons/299305
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제분석
보기엔 간단해 보인다. 각 대장균들은 PARENT_ID 컬럼을 가지고 있다. 각 ID별로 자식이 몇인지(본인을 부모로 하는 자식이 몇인지)출력할 것.
해결과정
해결하면서 INNER JOIN과 LEFT, RIGHT JOIN의 차이를 격하게 복습했다.
INNER : 공통되는 행들만 반환
LEFT RIGHT : 해당 방향 테이블 전부를 가져온 다음, ON 조건문에 일치하지 않으면 반대쪽을 NULL로 비워둠
또 새로이 알게 된 COALESCE : 입력된 값들 중 첫 번째로 NULL이 아닌 값 반환.
1. COUNT로 PARENT_ID 갯수를 센 다음 그걸 CHILD_COUNT로 저장
2. COALESCE를 통해서 0 혹은 CHILD_COUNT값 저장
3. ID와 CHILD_COUNT값 출력
SELECT A.ID, COALESCE(B.CHILD_COUNT,0) AS CHILD_COUNT
FROM
ECOLI_DATA AS A
LEFT JOIN(
SELECT PARENT_ID, COUNT(*) AS CHILD_COUNT
FROM ECOLI_DATA
GROUP BY PARENT_ID
HAVING PARENT_ID IS NOT NULL
) AS B
ON A.ID=B.PARENT_ID
ORDER BY ID ASC


'알고리즘&PS > SQL' 카테고리의 다른 글
| [SQL] 프로그래머스 59045 보호소에서 중성화한 동물 (0) | 2025.01.17 |
|---|---|
| [SQL] 프로그래머스 59043 있었는데요 없었습니다 (0) | 2025.01.16 |
| [SQL] 프로그래머스 59042 없어진 기록 찾기 (1) | 2025.01.12 |
| [SQL] 프로그래머스 131533 상품 별 오프라인 매출 구하기 (0) | 2025.01.12 |
| [SQL] 프로그래머스 131118 서울에 위치한 식당 목록 출력하기 (2) | 2025.01.09 |