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 |
|---|