SQL

프로그래머스 SQL - 대장균의 크기에 따라 분류하기 2

사랑박 2024. 7. 21. 21:10

1. 문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

2. 풀이

MySQL의 `NTITLE 함수` 사용해서 풀이할 수 있다.

NTILE

정의

특정한 컬럼의 값을 기준으로 N개 등급으로 분류하는 함수

사용법

SELECT NTILE([나눌 정수]) OVER (PARTITION BY [컬럼1] ORDER BY [컬럼2])

 

  • PATITION BY [컬럼1] 하면 [컬럼1]에서 파티션 나누고 파티션 내에서 N 등급
  • PATITION BY 는 생략 가능
  • 전체 행 개수를 나누고 싶은 그룹 수(나눌 정수)로 나눴을 때 나머지가 발생하면 첫 번째 그룹부터 크기가 1씩 추가됨
  • ex) 17개 데이터를 3그룹으로 나누면(나머지가 2) 1번째 그룹 6개, 2번째 그룹 6개, 3번째 그룹 5개가 됨 !

3. 정답

WITH COLONY_LEVEL AS (
    SELECT ID, 
    NTILE(4) OVER (ORDER BY SIZE_OF_COLONY DESC) AS COLONY_LEVEL
    FROM ECOLI_DATA
)

SELECT A.ID, 
    CASE
        WHEN B.COLONY_LEVEL = 1 THEN "CRITICAL"
        WHEN B.COLONY_LEVEL = 2 THEN "HIGH"
        WHEN B.COLONY_LEVEL = 3 THEN "MEDIUM"
        WHEN B.COLONY_LEVEL = 4 THEN "LOW"
    END AS COLONY_NAME
FROM ECOLI_DATA A, COLONY_LEVEL B
WHERE A.ID = B.ID;

'SQL' 카테고리의 다른 글

프로그래머스 SQL - 서울에 위치한 식당 목록 출력하기  (0) 2024.07.21