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

 

 

반응형