https://school.programmers.co.kr/learn/courses/30/lessons/301649
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
더보기
WITH TEMP AS (
SELECT
ID,
RANK() OVER(ORDER BY SIZE_OF_COLONY DESC) AS ranking,
COUNT(*) OVER() AS count
FROM
ECOLI_DATA
)
SELECT
ED.ID,
CASE
WHEN (ranking / count) * 100 <= 25 THEN "CRITICAL"
WHEN (ranking / count) * 100 <= 50 THEN "HIGH"
WHEN (ranking / count) * 100 <= 75 THEN "MEDIUM"
WHEN (ranking / count) * 100 <= 100 THEN "LOW"
END AS COLONY_NAME
FROM
ECOLI_DATA ED
JOIN TEMP ON ED.ID = TEMP.ID
PERCENT_RANK()를 이용한 방식
더보기
WITH TEMP AS(
SELECT
ID,
PERCENT_RANK() OVER(ORDER BY SIZE_OF_COLONY DESC) AS Percent
FROM
ECOLI_DATA
)
SELECT
ED.ID,
CASE
WHEN Percent <= 0.25 THEN "CRITICAL"
WHEN Percent <= 0.5 THEN "HIGH"
WHEN Percent <= 0.75 THEN "MEDIUM"
ELSE "LOW"
END AS COLONY_NAME
FROM ECOLI_DATA ED
JOIN TEMP ON ED.ID = TEMP.ID
ORDER BY ED.ID ASC;
NTILE을 이용한 풀이
더보기
WITH TEMP AS(
SELECT
ID,
NTILE(4) OVER(ORDER BY SIZE_OF_COLONY DESC) AS N
FROM
ECOLI_DATA
)
SELECT
ED.ID,
CASE
WHEN TEMP.N = 1 THEN "CRITICAL"
WHEN TEMP.N = 2 THEN "HIGH"
WHEN TEMP.N = 3 THEN "MEDIUM"
ELSE "LOW"
END AS COLONY_NAME
FROM ECOLI_DATA ED
JOIN TEMP ON ED.ID = TEMP.ID
ORDER BY ED.ID ASC;
'MYSQL > 프로그래머스 LV03' 카테고리의 다른 글
부서별 평균 연봉 조회하기 (0) | 2025.03.04 |
---|---|
물고기 종류 별 대어 찾기 (0) | 2025.02.26 |
특정 조건을 만족하는 물고기별 수와 최대 길이 구하기 (0) | 2025.02.26 |
대장균들의 자식의 수 구하기 (0) | 2025.02.26 |
대장균의 크기에 따라 분류하기 1 (0) | 2025.02.26 |