본문 바로가기
연습장/SQL

[프로그래머스] Lv3. 대장균들의 자식의 수 구하기 (MySQL)

by Ruas 2024. 8. 14.
728x90

 

 

프로그래머스

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

programmers.co.kr

 

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

 

1. 자식의 수 COUNT

 

대장균의 자식 수를 구하기 위해서 JOIN을 활용한다.

주어진 데이터 테이블은 ECOLI_DATA 한 가지로, self join을 활용할 예정이다.

 

 

문제에서 주어진 결과 테이블을 확인하면 CHILD를 가지고 있지 않은 대장균의 결과까지 모두 출력하고 있음을 알 수있다.

JOIN을 사용할 경우 기본적으로 Inner Join을 의미하는데, 이럴 경우 해당하는 값이 없다면 출력되지 않는다.

그래서 이번 문제에서는 Outer Join, LEFT JOIN을 사용한다.

 

SELECT A.ID, COUNT(B.ID) AS CHILD_COUNT
FROM ECOLI_DATA AS A LEFT JOIN ECOLI_DATA AS B

 

이제 A와 B의 어느 값을 기준으로 JOIN을 할 것인지 설정해야한다.

문제에서 대장균이 가지는 자식의 수 즉, ID가 가지는 PARENT_ID의 개수를 의미하는 것이기 때문에

 

ON A.ID = B.PARENT_ID

 

A의 ID와 B의 PARENT_ID를 연결한다.

 

2. 전체코드

 

더보기
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 ID
ORDER BY ID

 

728x90

댓글