SQL - PERCENT_RANK 함수

CODE0227·2025년 3월 10일

SQL

목록 보기
2/6

1️⃣PERCENT_RANK() 란?

PERCENT_RANK()는 SQL에서 사용되는 창 함수(Window Function)로, 데이터 집합 내에서 각 행의 상대적인 순위를 백분율(0에서 1 사이)로 계산한다. 주로 데이터 분석에서 값의 분포를 이해하거나 특정 행이 전체에서 어느 위치에 있는지 파악할 때 유용한 함수이다.

PERCENT_RANK() = (rank - 1) / (total_rows - 1)

2️⃣예시

PERCENT_RANK() OVER (
    [PARTITION BY column]
    ORDER BY column
)

PARTITION BY 절은 행들을 별도의 파티션으로 나누고, ORDER BY 절은 각 파티션 내에서 행의 순서를 정한다. PERCENT_RANK()는 각 파티션마다 정렬된 순서를 바탕으로 독립적으로 값을 계산한다. 두 절은 필수가 아니지만, PERCENT_RANK()는 순서에 의존하는 함수이기 때문에 ORDER BY 절을 반드시 포함해야 한다.

테이블

student_idscore
190
285
395
485

해당 테이블에 score 데이터를 통해 퍼센트 순위를 구하는 방법

쿼리

SELECT
    student_id,
    score,
    PERCENT_RANK() OVER (ORDER BY score) AS percent_rank
FROM scores;

결과

student_idscorepercent_rank
2850.0 -- 첫 번째 순위
4850.0 -- 동일 값은 같은 순위
1900.6667 -- (2-1)/(4-1) = 1/3 ≈ 0.3333
3951.0 -- 마지막 순위

PARTITION BY 사용 할 경우

테이블

student_idclassscore
1A90
2A85
3A95
4B88
5B92
6B88

class별로 그룹을 나누고, 각 그룹 내에서 순위 계산을 한다.

쿼리

SELECT
    student_id,
    score,
    PERCENT_RANK() OVER (PARTITION BY class ORDER BY score) AS percent_rank
FROM scores_with_class;

결과

student_idclassscorepercent_rank
1A900.5
2A850.0
3A951.0
4B880.0
5B921.0
6B880.0

3️⃣ 결론

PERCENT_RANK()는 데이터의 상대적 위치를 백분율로 나타내는 창 함수로, 순위 분석이나 통계에서 유용하다. 예를 들어, 시험 점수에서 각 학생이 상위 몇 %에 속하는지 확인할 때 활용할 수 있다.

profile
CODE0227

0개의 댓글