Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

파란색가운의 개발 블로그

[SQL 고득점 Kit] SELECT - 대장균들의 자식의 수 구하기 본문

알고리즘 문제 풀이/프로그래머스

[SQL 고득점 Kit] SELECT - 대장균들의 자식의 수 구하기

파란색 가운 2024. 7. 6. 17:06

https://school.programmers.co.kr/learn/courses/30/lessons/299305

 

프로그래머스

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

programmers.co.kr

난이도 : 중 - 중상

어렵다. select 쪽에 서브쿼리를 써보는게 처음이였어서 30분정도 고민하고 그냥 답지 봤다.

 

SELECT ID,IFNULL((SELECT COUNT(*) FROM ECOLI_DATA GROUP BY PARENT_ID HAVING PARENT_ID = ID),0) AS CHILD_COUNT
FROM ECOLI_DATA
ORDER BY ID ASC

 

SELECT에 카운트를 쓰긴 써야하는데, 저 카운트를 어떻게 가져와야 하는지를 고민했는데 저런 쿼리를 처음 봐서 

IFNULL문까지는 썼는데 잘 해결을 못했다

 

그래서 해결책 . 만약 저 카운트가 NULL이라면 0으로 대체해주는 IFNULL 함수를 작성해주고

서브쿼리로

 

SELECT COUNT(*) FROM ECOLI_DATA GROUP BY PARENT_ID HAVING PARENT_ID = ID

PARENT_ID로 그룹을 만들어주고, HAVING절을 통해서 PARENT_ID = ID 조건을 걸어준다 

이것을 카운트해주게 되면 PARENT_ID 내에 ID가 몇개 있는지 카운트가 됨