문제
MYSQL
내가 작성한 정답
with sorted as (select id, size_of_colony,
percent_rank() over (order by size_of_colony desc) as sort
from ecoli_data)
select id, case
when sort <= 0.25 then 'CRITICAL'
when sort <= 0.5 then 'HIGH'
when sort <= 0.75 then 'MEDIUM'
else 'LOW' end COLONY_NAME
from sorted
order by 1 asc
PERCENT_RANK

PERCENT_RANK() 함수
특정 행이 차지하는 상대적 위치를 백분율로 표현
PERCENT_RANK() OVER (PARTITION BY column1 ORDER BY column2)
PARTITION BY: 데이터 집합을 나누는 기준이 되는 열을 지정. 이 부분이 없으면 전체 집합에 대해 계산된다.
ORDER BY: 순위를 매길 기준이 되는 열을 지정. 이 열의 값에 따라 순위가 결정된다.
// 각 직원의 급여에 대한 상대적 순위를 계산
SELECT
id,
name,
salary,
PERCENT_RANK() OVER (ORDER BY salary) AS salary_percent_rank
FROM
employees;
// 부서별로 직원의 급여 순위를 계산 -> PARTITION BY를 사용
SELECT
id,
name,
department_id,
salary,
PERCENT_RANK() OVER (PARTITION BY department_id ORDER BY salary) AS salary_percent_rank
FROM
employees;
Share article