문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/301649
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
와,, 플그머로 SQL 안푼지 오래되었더니,, 수준이 한참 높아졌구나.. ㅜ
참고를 안하면 못풀겠다..
풀이
PERCENT_RANK()
상대 순위함수로 현재 행 값에 대해 0 ~ 1사이의 상대값을 리턴한다.
가장 작은 값은 0 가장 큰 값은 1에 가까운 값을 갖는다.
1. 첫번째 값은 항상 0이다.
2. 동일한 값이 여러 개일 경우, 동일한 순위로 처리된다.
3. 해당 값의 순위는 (순번 - 1) / (전체 행 개수 - 1)로 계산된다.
코드
SELECT
E.ID,
CASE
WHEN E.PERCENT <= 0.25 THEN 'CRITICAL'
WHEN E.PERCENT <= 0.5 THEN 'HIGH'
WHEN E.PERCENT <= 0.75 THEN 'MEDIUM'
ELSE 'LOW'
END AS COLONY_NAME
FROM (
SELECT ID,
PERCENT_RANK() OVER
(ORDER BY SIZE_OF_COLONY DESC) AS PERCENT
FROM ECOLI_DATA
) AS E
ORDER BY E.ID
'알고리즘 > SQL' 카테고리의 다른 글
[PROG] LV2 연도별 대장균 크기의 편차 구하기 (MySQL) (0) | 2024.10.17 |
---|---|
[PROG] LV1 특정 형질을 가지는 대장균 찾기 (MySQL) (0) | 2024.10.17 |
[PROG] LV2 부모의 형질을 모두 가지는 대장균 찾기 (MySQL) (0) | 2024.10.17 |
[PROG] LV4 특정 세대의 대장균 찾기 (MySQL) (2) | 2024.10.17 |
[PROJ] LV5 멸종위기의 대장균 찾기 (MySQL) (0) | 2024.10.17 |