문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/301649


입출력 예


풀이
SELECT ID,
CASE
WHEN PERCENT <= 0.25 THEN 'CRITICAL'
WHEN 0.25 < PERCENT AND PERCENT <= 0.5 THEN 'HIGH'
WHEN 0.5 < PERCENT AND PERCENT <= 0.75 THEN 'MEDIUM'
ELSE 'LOW'
END AS 'COLONY_NAME'
FROM (
SELECT *, PERCENT_RANK() OVER(ORDER BY SIZE_OF_COLONY DESC) AS 'PERCENT'
FROM ECOLI_DATA
) e
ORDER BY ID;
ㄴ PERCENT_RANK() 사용
SELECT ID,
CASE PERCENT
WHEN 1 THEN 'CRITICAL'
WHEN 2 THEN 'HIGH'
WHEN 3 THEN 'MEDIUM'
WHEN 4 THEN 'LOW'
END AS 'COLONY_NAME'
FROM (
SELECT *, NTILE(4) OVER(ORDER BY SIZE_OF_COLONY DESC) AS PERCENT
FROM ECOLI_DATA
) AS e
ORDER BY ID;
ㄴ NTILE() 사용
후기
PERCENT RANK()나 NTILE() 중 하나를 골라서 작성하면 된다.
전자는 각 데이터가 전체 데이터에서 차지하는 위치를 0과 1 사이의 값으로 나타내고,
후자는 전체 데이터를 여러 구간으로 나눈 뒤 해당 데이터가 속한 구간을 얻을 수 있다.
'코딩테스트 (프로그래머스) > SQL' 카테고리의 다른 글
| [프로그래머스][MySQL][Lv. 2] 조건에 맞는 사원 정보 조회하기 (0) | 2026.02.07 |
|---|---|
| [프로그래머스][MySQL][Lv. 4] 특정 세대의 대장균 찾기 (0) | 2026.01.01 |
| [프로그래머스][MySQL][Lv. 1] 특정 옵션이 포함된 자동차 리스트 구하기 (0) | 2023.05.21 |
| [프로그래머스][MySQL][Lv. 3] 조건에 맞는 사용자와 총 거래금액 조회하기 (0) | 2023.05.21 |
| [프로그래머스][MySQL][Lv. 2] 자동차 평균 대여 기간 구하기 (0) | 2023.05.21 |