문제
https://school.programmers.co.kr/learn/courses/30/lessons/299305
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
SELECT P.ID AS ID, COUNT(C.ID) AS CHILD_COUNT
FROM ECOLI_DATA P
LEFT JOIN ECOLI_DATA C ON P.ID = C.PARENT_ID
GROUP BY P.ID
ORDER BY P.ID;
접근 방법
- 부모 개체와 자식 개체를 연결하기 위해 같은 테이블을 조인
- 자식 개체가 없는 경우도 포함하기 위해 LEFT JOIN
- 각 부모 개체의 자식 개체 수를 세기 위해 GROUP BY와 COUNT
- FROM ECOLI_DATA P: ECOLI_DATA 테이블을 P라는 별칭으로 참조. P는 부모 개체
- LEFT JOIN ECOLI_DATA C ON P.ID = C.PARENT_ID: 다시 ECOLI_DATA 테이블을 C로 참조. C는 자식 개체 조인
- 조건은 P.ID = C.PARENT_ID로, 부모 개체의 ID와 자식 개체의 PARENT_ID가 일치하는 경우
- COUNT(C.ID) AS CHILD_COUNT: 자식 개체의 ID를 세어서 자식의 수를 계산. 자식 개체가 없는 경우 COUNT(C.ID)는 0
- GROUP BY P.ID: 부모 개체의 ID를 기준으로 그룹화하여 각 부모 개체별 자식 개체 수를 계산
'SQL' 카테고리의 다른 글
[SQL 고득점 Kit] 299307. 대장균의 크기에 따라 분류하기 1 (0) | 2024.07.04 |
---|---|
[SQL 고득점 Kit] 301646. 특정 형질을 가지는 대장균 찾기 (0) | 2024.07.03 |
[SQL 고득점 Kit] 298518. 특정 물고기를 잡은 총 수 구하기 (0) | 2024.07.03 |
[SQL 고득점 Kit] 298517. 가장 큰 물고기 10마리 구하기 (0) | 2024.07.03 |
[SQL 고득점 Kit] 293258. 잔챙이 잡은 수 구하기 (0) | 2024.07.03 |