문제풀이/SQL

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

monawa 2025. 8. 1.
728x90

문제 

https://school.programmers.co.kr/learn/courses/30/lessons/301649

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 대장균 개체의 ID  부모 개체의 ID  개체의 크기  분화되어 나온 날짜  개체의 형질
ID PARENT_ID SIZE_OF_COLONY DIFFERENTIATION_DATE GENOTYPE
1 null 10 2019-01-01 5
2 null 2 2019-01-01 3
3 1 100 2020-01-01 4
4 2 16 2020-01-01 4
5 2 17 2020-01-01 6
6 4 101 2021-01-01 22
7 6 101 2022-01-01 23
8 6 1 2022-01-01 27

풀이

with a as(
  SELECT ID
    ,PERCENT_RANK() OVER ( ORDER BY SIZE_OF_COLONY DESC ) SIZE_RANK
  FROM ECOLI_DATA  
)

select
    B.ID,
    case 
        when a.SIZE_RANK <= 0.25 then 'CRITICAL'
        when a.SIZE_RANK <= 0.5 then 'HIGH'
        when a.SIZE_RANK <= 0.75 then 'MEDIUM'
        else 'LOW' 
    END AS COLONY_NAME
    
from ECOLI_DATA b  
left join a on a.id =b.id

ORDER BY ID

 

윈도우 함수중에 PERCENT_RANK 을 이용하여 파티션에서 백분률을 구할수있습니다 


쓰는법 

PERCENT_RANK() OVER (
    [PARTITION BY partition_expression, ... ]
    ORDER BY sort_expression [ASC | DESC], ...
)

이를 이용해 전체 사이즈 백분률을 구하고 해당 구한 값으로 퍼센트당 명칭 조건문을 넣으면 끗

728x90

댓글