알고리즘/SQL

[PROG] LV3 대장균들의 자식의 수 구하기 (MySQL)

세동세 2024. 10. 17. 21:24

문제링크

https://school.programmers.co.kr/learn/courses/30/lessons/299305

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이

이 문제도 체감상 lv 1 ~ lv 2 수준인 것 같다.

개인적으로 서브쿼리보다 CTE를 사용하는 방식이 변수처럼 분리가 가능해서 

가독성상 선호한다!

코드

WITH CHILD_CNT AS (
    SELECT
        PARENT_ID ,
        COUNT(PARENT_ID) AS CNT
    FROM ECOLI_DATA
    WHERE PARENT_ID IS NOT NULL
    GROUP BY PARENT_ID
)

SELECT 
    ID,
    IFNULL(C.CNT, 0) AS CHILD_COUNT
FROM ECOLI_DATA AS E 
LEFT JOIN CHILD_CNT AS C
ON E.ID = C.PARENT_ID
ORDER BY ID;