문제 출저
https://school.programmers.co.kr/learn/courses/30/lessons/299305#qna
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
조회
- ID
- COUNT(B.ID) AS CHILD_COUNT
조인
- SELF JOIN, LEFT JOIN 사용. ID와 PARENT_ID를 조인
- FROM
ECOLI_DATA AS A
LEFT JOIN
ECOLI_DATA AS B ON A.ID = B.PARENT_ID
그룹
- A.ID
정렬
- A.ID
SELF JOIN을 통해 (ID, 자식 ID) 형태로 만듭니다.
ID를 그룹화하여 자식ID의 수를 세면 자식의 수를 구할 수 있습니다.
SQL
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
A.ID
ORDER BY
A.ID
# 처음 풀이 : 서브 쿼리 사용
# SELECT
# ID,
# IFNULL(TEMP.COUNT, 0)
# AS CHILD_COUNT
# FROM
# ECOLI_DATA AS E
# LEFT JOIN (
# SELECT PARENT_ID, COUNT(*) AS COUNT
# FROM ECOLI_DATA
# WHERE PARENT_ID IS NOT NULL
# GROUP BY PARENT_ID
# ) AS TEMP ON E.ID = TEMP.PARENT_ID