SQL 쿼리 연습/SELECT
[Lv.3 / 프로그래머스 / SQL] 대장균의 크기에 따라 분류하기 2
김세진
2024. 12. 17. 19:37
반응형
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이(MySQL)
NTILE() 함수를 사용하면 특정 데이터를 등급별로 분류할 수 있다. 문제에서는 총 4가지의 등급이 존재하므로 해당 함수를 통해 4등급으로 나눈 뒤, CASE 별로 문자로 치환하면 문제를 해결할 수 있다.
SELECT
ID,
CASE
WHEN NTILE(4) over (ORDER BY SIZE_OF_COLONY) = 1 THEN "LOW"
WHEN NTILE(4) over (ORDER BY SIZE_OF_COLONY) = 2 THEN "MEDIUM"
WHEN NTILE(4) over (ORDER BY SIZE_OF_COLONY) = 3 THEN "HIGH"
WHEN NTILE(4) over (ORDER BY SIZE_OF_COLONY) = 4 THEN "CRITICAL"
END AS COLONY_NAME
FROM
ECOLI_DATA
ORDER BY
ID
NTILE 함수를 네 번이나 사용하는 것이 불편하다면, 아래와 같이 해결할 수도 있다.
SELECT
ID,
CASE GRADE
WHEN 1 THEN "LOW"
WHEN 2 THEN "MEDIUM"
WHEN 3 THEN "HIGH"
WHEN 4 THEN "CRITICAL"
END AS COLONY_NAME
FROM (
SELECT
ID,
NTILE(4) over (ORDER BY SIZE_OF_COLONY) AS GRADE
FROM
ECOLI_DATA
) AS t
ORDER BY
ID
반응형