[SQL] 대장균의 크기에 따라 분류하기 2

NoHae·2025년 10월 28일

SQL

목록 보기
73/86

문제 출처

코딩테스트 연습 > SELECT > 대장균의 크기에 따라 분류하기2
https://school.programmers.co.kr/learn/courses/30/lessons/301649

문제 설명

대장균 개체의 크기를 내름차순으로 정렬했을 때 상위 0% ~ 25% 를 'CRITICAL', 26% ~ 50% 를 'HIGH', 51% ~ 75% 를 'MEDIUM', 76% ~ 100% 를 'LOW' 라고 분류한다. 대장균 개체의 ID(ID) 와 분류된 이름(COLONY_NAME)을 출력하는 SQL 문을 작성하라.

접근 방법

FROM 절에 서브쿼리를 통해 ID와 백분율 순위를 계산한다.
이 때, PERCENT_RANK()만 이용하면 결과가 집계 되므로 OVER (ORDER BY SIZE_OF_COLONY DESC)를 이용하여 개체 크기별로 내림차순하여 결과가 집계가 되지 않도록 한다.

이후 조회한 내용을 바탕으로 조건을 통해 각각 해당하는 분류한다.

SELECT
ED.ID AS ID,
(
    CASE
        WHEN ED.PER <=0.25  THEN 'CRITICAL'
        WHEN ED.PER <=0.5 THEN 'HIGH'
        WHEN ED.PER <=0.75 THEN 'MEDIUM'
        ELSE 'LOW'
    END
) AS COLONY_NAME
FROM
(
    SELECT ID, PERCENT_RANK() OVER (ORDER BY SIZE_OF_COLONY DESC) AS PER FROM ECOLI_DATA
)  AS ED
ORDER BY ID

알게된 점

백분율 순위를 알 수 있는 PERCENT_RANK() 와 집계하지 않고, 각 행에 전부 붙일 수 있는 OVER()에 대해서 자세하게 알 수 있었다.

문제푼 흔적

profile
노력 해보려고 하는 사람(00년생 소프트웨어융합학과, 24년 12월 부터 백엔드 및 코테 공부 시작)

0개의 댓글