반응형

ㅇ출저 : 프로그래머스

SELECT

문제풀이

 

A. JOIN 사용

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

 


     

    N차세대 자식수를 구할 땐 조인을 이용하여 생각해야한다 

    처음에 ID는 자식, PARENT_ID 는 부모를 의미하고있는데 문제에서 자식의 수를 구해야하므로  저 두 행 위치가 서로 바뀌어 정렬되어야한다. 그래서 JOIN을 할때 ON A.ID = B.PARENT_ID  을 하여 비교하면 쉽게 눈에 보인다

     

    좌측은 기본테이블 / 우측에 붙은테이블은 B.ID(자식), B.PARENT_ID(부모)로, 한눈에 파악하기위해 조인함 처

    조인할 당시 ON A.ID = B.PARENT_ID 로 조인을 했기때문에 좌측 A.IDB.PARENT_ID 부모 포지션으로 같아지고  

    B.PARENT_ID의 자식 B.IDA.ID의 자식으로 볼 수 있다

     

    즉  아래와 같은 테이블로 볼 수 있다

     

     

    그래서 GROUP BY 와 COUNT를 이용하여 결과를 출력할 수 있다. 

    (단 COUNT에서 COUNT(B.PARENT_ID) 를 입력해도 결과는 같지만 출력되는 테이블은 다르므로 유의)

     

     

     

     

    아래문제는 비슷한 유형이므로 연계해서 풀어보면 도움이 될 것 같다.

    [프로그래머스/MYSQL] 업그레이드 할 수 없는 아이템 구하기 :: 공기업 전산직을 위한 도서관

    반응형

    + Recent posts

    // 기업0 D-Day (표지) // 기업2 D-Day