문제 출저
https://school.programmers.co.kr/learn/courses/30/lessons/299305
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
대장균 개체의 ID와 자식의 수를 출력해야 합니다.
자식의 수를 세기 위해 자기 자신과 조인을 맺습니다. LEFT JOIN으로 ID = PARENT_ID를 연결합니다.
왼쪽 테이블은 부모, 오른쪽 테이블은 자식이 됩니다. B.ID를 카운트하여 자식 수를 셉니다.
ID에 대해 오름차순 정렬이므로 ORDER BY를 사용하여 정렬을 합니다.
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