728x90
반응형
문제링크
https://school.programmers.co.kr/learn/courses/30/lessons/301649
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 핵심
- percent_rank() over (partition by 컬럼 order by 컬럼)
- percent_rank() over (partition by ~ order by ~)
- partition by 컬럼: 해당 컬럼으로 group을 구성하고 그 안에서 랭킹 선정
- order by 컬럼: 해당 컬럼기준으로 asc는 가장 적은게 1등. desc는 가장 큰 게 1등으로 선정
- NTILE(n) OVER (ORDER BY 컬럼)
- 예를 들어, 데이터를 4분위수로 나누고자 할 때, NTILE(4)를 사용하여 데이터를 4개의 구간으로 나눔
- order by 컬럼: order로 정렬한 후에 n개의 구간으로 나눈다.
2. 코드(MySQL)
-- percent_rank() 라는 윈도우함수 존재
with tmp as (
select ID,
percent_rank() over (order by SIZE_OF_COLONY desc) as RN
from ECOLI_DATA
)
select ID, RN,
case
when RN <= 0.25 then 'CRITICAL'
when RN <= 0.5 then 'HIGH'
when RN <= 0.75 then 'MEDIUM'
else 'LOW'
end as COLONY_NAME
from tmp
order by ID asc;
- [실행결과 일부]
WITH tmp AS (
SELECT ID,
NTILE(4) OVER (ORDER BY SIZE_OF_COLONY DESC) AS NT
FROM ECOLI_DATA
)
SELECT ID,
CASE NT
WHEN 1 THEN 'CRITICAL'
WHEN 2 THEN 'HIGH'
WHEN 3 THEN 'MEDIUM'
ELSE 'LOW'
END AS COLONY_NAME
FROM tmp
ORDER BY ID ASC;
728x90
반응형
'PS > SQL' 카테고리의 다른 글
[프로그래머스] 특정 세대의 대장균 찾기 (2) | 2024.05.02 |
---|---|
[프로그래머스] 부모의 형질을 모두 가지는 대장균 찾기 (0) | 2024.05.02 |
[프로그래머스] 대장균들의 자식의 수 구하기 (1) | 2024.05.01 |
[프로그래머스] 특정 형질을 가지는 대장균 찾기 (0) | 2024.04.30 |
[HackerRank] Weather Observation Station 13 (0) | 2024.04.24 |