SQL_Programmers 코딩 테스트 3

DA_LEESUNHO·2025년 11월 5일

Practice & Project

목록 보기
3/5

학습사이트 > https://school.programmers.co.kr/

대장균들의 자식의 수 구하기

SELECT
     A.ID, COUNT(B.ID) AS CHILD_COUNT
FROM ECOLI_DATA A
LEFT JOIN
     ECOLI_DATA B
ON A.ID = B.PARENT_ID
GROUP BY A.ID
HAVING (CHILD_COUNT IS NULL) = 0

해당 문제에서 포인트는 JOIN 이다.
ECOLI_DATA 는 아래와 같다.


목적에 맞는 결과 값을 얻기 위해서는, ID 와 PARENT_ID 칼럼을 활용해야 한다.
JOIN을 통해 ID 와 PARENT_ID 칼럼을 PK, FK 로 지정해서 출력해보자


매핑된 테이블이 출력 되었다.
자식의 수를 구하는 목적을 해결하기 위한 조건은 완성된 것이다.

자식의 수 = 0 인 경우, NULL 이 아닌 숫자 0을 출력해야 하는 조건도 있기에,
HAVING 절로 조건도 명시 해야한다.
이후 집계함수 COUNT, GROUP BY 를 통한 ID 컬럼 별로 출력 할 수 있게 진행하면 된다.


대장균들의 크기에 따라 분류하기1

SELECT
    ID,
    CASE WHEN SIZE_OF_COLONY <= 100 THEN 'LOW'
         WHEN SIZE_OF_COLONY <= 1000 THEN 'MEDIUM'
    ELSE 'HIGH' END AS SIZE
FROM ECOLI_DATA
ORDER BY ID

해당 문제에서 포인트는 CASE 구문 이다.
대장균 개체의 크기가
① 100 이하라면 'LOW', 100 초과 1000 이하라면 'MEDIUM', 1000 초과라면 'HIGH' 분류
② ID 별 오름차순 정렬
의 조건이 명시

     // 테이블은 (ECOLI_DATA) 동일함

어렵지 않은 문제였다.
CASE 구문의 동작 로직을 상기하도록 하자
아래를 통해 살펴보자

CASE WHEN 조건1 THEN 결과
	 WHEN 조건2 THEN 결과2		--- **조건1 에 해당하는 데이터는 걸러진 상태**
     ...
     ELSE 결과3
END

조건1 에 해당되는 데이터는 고려하지 않고, 이후 조건 부분을 작성한다.

profile
성장과 회고를 기록하는 일기장

0개의 댓글