코딩테스트 연습 > 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()에 대해서 자세하게 알 수 있었다.