SQL/프로그래머스 문제풀이

[SELECT] 대장균들의 자식의 수 구하기

너지살 2024. 4. 22. 11:33

 

 

 

문제 출저

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

 

프로그래머스

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

programmers.co.kr

 

 

 

문제 풀이

대장균 개체의 ID와 자식의 수를 출력해야 합니다. 

자식의 수를 세기 위해 자기 자신과 조인을 맺습니다. LEFT JOIN으로 ID = PARENT_ID를 연결합니다.

왼쪽 테이블은 부모, 오른쪽 테이블은 자식이 됩니다. B.ID를 카운트하여 자식 수를 셉니다. 

ID에 대해 오름차순 정렬이므로 ORDER BY를 사용하여 정렬을 합니다. 

 

 

 

SQL

SELECT 
    A.ID,
    COUNT(B.ID) AS CHILD_COUNT
FROM
    ECOLI_DATA AS A
LEFT JOIN    
    ECOLI_DATA AS B ON A.ID = B.PARENT_ID
GROUP BY
    A.ID
ORDER BY 
    A.ID 


# SELECT 
#     ID,
#     IFNULL(TEMP.COUNT, 0)
#     AS CHILD_COUNT
# FROM
#     ECOLI_DATA AS E
# LEFT JOIN (
#     SELECT PARENT_ID, COUNT(*) AS COUNT
#     FROM ECOLI_DATA
#     WHERE PARENT_ID IS NOT NULL
#     GROUP BY PARENT_ID
# ) AS TEMP ON E.ID = TEMP.PARENT_ID