SQL

프로그래머스 SQL - 상위 퍼센트 대로 나누기 / percent_rank()

silver-w 2025. 3. 27. 14:10

프로그래머스 - 대장균의 크기에 따라 분류하기 2번 문제 

 

-정답-

select ID
     , (case 
            when p <= 0.25 then 'CRITICAL' 
            when p <= 0.5 then 'HIGH' 
            when p <= 0.75 then 'MEDIUM' 
        else 'LOW'         
        end) as COLONY_NAME
from (select ID 
           , percent_rank() over (order by SIZE_OF_COLONY desc) p
        from ECOLI_DATA) t
order by ID ASC

 

 

필요한 지식 

 

percent_rank() : 상대적 백분위 수를 나타낸다. 값이 낮을 수록 값이 크다.

"상위 ~ 퍼센트" 값을 구할때 매우 유용할듯

기본구성
 Percent_rank() over(partition by 컬럼1 order by 컬럼2 ASC/DESC) 
이때 partition by 는 생략 가능 , 

 

select 고객번호, 마일리지
     , percent_rank() over(partition by 지역 order by 마일리지 DESC)*100 백분위
from 고객
order by 백분위 Asc;