[프로그래머스 SQL/299305] 대장균들의 자식의 수 구하기

☑️ 문제

프로그래머스 299305

☑️ 풀이

LEFT JOIN 결과

SELECT *
FROM ECOLI_DATA ED1 LEFT JOIN ECOLI_DATA ED2
ON ED1.ID = ED2.PARENT_ID
  • 부모-자식 관계를 표현하려면 자기 자신을 조인해야 한다.
    • 여기서 ED1.ID가 부모, ED2.PARENT_ID가 자식의 부모라고 보면 된다.
    • 부모가 자식을 여러 개 가진다면 그 수만큼 행이 생성된다.
  • ID에 대한 자식의 수를 리턴해주기 위해 먼저 LEFT JOIN을 한 결과를 살펴보면 다음과 같다.

    Image

전체 풀이

SELECT ED1.ID, COUNT(ED2.PARENT_ID) AS 'CHILD_COUNT'
FROM ECOLI_DATA ED1 LEFT JOIN ECOLI_DATA ED2
ON ED1.ID = ED2.PARENT_ID
GROUP BY ED1.ID
ORDER BY ED1.ID
  • 위의 결과에서 ED1.ID로 그룹핑한 후, COUNT(ED2.PARENT_ID)해주면 자식의 수가 리턴된다.
  • 자식이 없는 경우 NULL로 나타나지만, COUNT(NULL)은 0으로 처리된다.

© 2021. All rights reserved.

yaejinkong의 블로그