본문 바로가기

Algorithm

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

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

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

✅ 문제

대장균 개체의 ID(ID)와 자식의 수(CHILD_COUNT)를 출력하는 SQL 문을 작성해 주세요. 자식이 없다면 자식의 수는 0으로 출력해 주세요. 이때 결과는 개체의 ID에 대해 오름차순 정렬해 주세요.

 

 

✅ 나의 코드

SELECT ID, 
     	(SELECT 
        	COUNT(ID) 
            FROM ECOLI_DATA AS B 
            WHERE A.ID = B.PARENT_ID 
        ) AS CHILD_COUNT
FROM ECOLI_DATA AS A

 

나는 가장 먼저 생각난거는 스칼라 서브쿼리를 쓰는게 생각나서 이렇게 풀었고 정답도 나왔다

 

그리고 나서 다른풀이는 어떻게 풀었을까 보게되었다.

 

 

 

✅ 다른풀이

 

 

 

LEFT JOIN을 사용하고 GROUP BY를 사용해서 풀었다

 

PARENT를 기준으로 부모의 아이디(CHILD.PARENT_ID)와 부모 자신의 아이디 (PARENT.ID)로 JOIN을 해주었습니다.

SELECT절에서 집계 함수 없이 나열된 칼럼 이름이나 표현식은 GROUP BY절에 반드시 포함되어야 합니다.
 
위와 같은 GROUP BY절의 특징 때문에 집계 함수인 COUNT(CHILD.ID)를 제외한 PARENT.ID를 GROUP BY절에 반드시 포함시켜야 합니다.