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 컬럼 별로 출력 할 수 있게 진행하면 된다.
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 에 해당되는 데이터는 고려하지 않고, 이후 조건 부분을 작성한다.