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;

'SQL' 카테고리의 다른 글

[DB]NULL값 허용과 관계테이블  (0) 2024.11.20
SQL기출 오답풀이  (0) 2024.11.14
SQL 깜지  (0) 2024.10.25
[Oracle] 비율함수  (0) 2024.10.25
[oracle sql] 의사 컬럼, 분석 함수, 계층 쿼리  (0) 2024.10.22