[SQL] 연습

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

Simon Yoon 2024. 8. 16. 22:57

문제: 대장균 개체(ID)와 자식의 수(CHILD_COUNT)를 출력하는 SQL 작성

- 자식이 없다면 자식의 수는 0으로 출력

- 결과는 개체의 ID에 대해 오름차순 정렬

 

해결방법:

1. ECOLI_DATA 테이블에서 'ID' 컬럼을 구한다 → 테이블에서의 전체 개체(ID) 출력

2. ECOLI_DATA 테이블에서 GROUP BY 로 'PARENT_ID' 별 레코드 수 계산 → 각 PARENT 별 자식 수 카운트 가능

3. 자식이 없는 ID 도 있으므로 1번 결과 테이블과 2번 결과 테이블을 LEFT OUTER JOIN 을 해서 모든 ID 에 대해 자식 수가 표시될 수 있도록 함.

4. 이 때, 자식 수가 없는 경우 NULL 이므로 IFNULL() 규칙으로 처리해주면 된다.

 

코드 예시

SELECT A.ID, IFNULL(B.CHILD_COUNT, 0) AS CHILD_COUNT
FROM (SELECT ID
      FROM ECOLI_DATA) AS A
     LEFT OUTER JOIN 
     (SELECT PARENT_ID AS ID, COUNT(*) AS CHILD_COUNT 
      FROM ECOLI_DATA
      GROUP BY PARENT_ID) AS B
     ON A.ID = B.ID
;