https://school.programmers.co.kr/learn/courses/30/lessons/301649
코드설명
윈도우함수( WINDOW FUNCTION, ROW_NUMBER , COUNT) + SUBQUERY를 활용합니다.
윈도우함수를 통해 GROUP BY 와 다르게 집계 레코드들이 줄어들지않고, 그 상태에서 레코드에 추가적인 속성을 붙일 수 있습니다.(INNER JOIN 없이도 가능) 매우 편리한 함수입니다.
코드
SELECT
ED2.ID,
CASE
WHEN ED2.RN > ED2.COUNT * 0.75 THEN 'CRITICAL'
WHEN ED2.RN > ED2.COUNT * 0.50 THEN 'HIGH'
WHEN ED2.RN > ED2.COUNT * 0.25 THEN 'MEDIUM'
ELSE 'LOW'
END AS 'COLONY_NAME'
FROM (
SELECT ID,
ROW_NUMBER() OVER (ORDER BY SIZE_OF_COLONY ASC) AS RN,
COUNT(*) OVER () AS COUNT
FROM
ECOLI_DATA
) AS ED2
ORDER BY ED2.ID ASC