출처
문제
대장균 개체의 크기를 내름차순으로 정렬했을 때 상위 0% ~ 25% 를 'CRITICAL', 26% ~ 50% 를 'HIGH', 51% ~ 75% 를 'MEDIUM', 76% ~ 100% 를 'LOW' 라고 분류합니다. 대장균 개체의 ID(ID) 와 분류된 이름(COLONY_NAME)을 출력하는 SQL 문을 작성해주세요. 이때 결과는 개체의 ID 에 대해 오름차순 정렬해주세요 . 단, 총 데이터의 수는 4의 배수이며 같은 사이즈의 대장균 개체가 서로 다른 이름으로 분류되는 경우는 없습니다.
문제에 대한 해석
풀이(MYSQL)
select id
, case when rk <= 0.25 then 'CRITICAL'
when rk <= 0.50 then 'HIGH'
when rk <= 0.75 then 'MEDIUM'
else 'LOW' end as COLONY_NAME
from
(select id, percent_RANK()over(order by SIZE_OF_COLONY desc) as rk
from ECOLI_DATA)a
order by id
작동순서
💡SQL 실행 순서는 From -> Where -> Group by -> Having -> Select -> Order by ->결과반환
- FROM 절: ECOLI_DATA 테이블에서 id와 SIZE_OF_COLONY의 내림차순으로 백분위수(percent_rank)를 구하라(rk)
- SELECT 절: id와 percent_rank가 0.25이하일 경우 CRITICAL, 0.5이하일 경우 HIGH, 0.75이하일 경우 MEDIUM, 그 외 LOW로 저장
- ORDER BY 절: id 오름차순
배운점
percent_rank() : 0부터 1까지 백분율을 계산
( rank - 1 ) / ( total_rows - 1 )와 동일한 계산
순위 | 백분위수 |
예) 아이디 3은 percent_rank를 통해 상위 29%
순위로는 3이다
(3-1)/(8-1) = 0.28(반올림0.29)
'문제풀이 > SQL(My sql)' 카테고리의 다른 글
[문제풀이] 프로그래머스 - 입양 시각 구하기(2) (2) | 2024.06.28 |
---|---|
[문제풀이] Leet code - Count Salary Categories (0) | 2024.06.27 |
[문제풀이] Leet code - Confirmation Rate (0) | 2024.06.26 |
[문제풀이] 프로그래머스 - 대장균들의 자식의 수 구하기 (0) | 2024.06.26 |
[문제풀이] 프로그래머스 - 보호소에서 중성화한 동물 (0) | 2024.06.25 |