[Oracle] 오라클 RANK, DENSE_RANK 순위 함수 사용방법(over, partition by)

    Oracle RANK 및 DENSE_RANK 함수는 SQL 쿼리에서 데이터를 분석하고, 데이터 집합 내의 각 행의 순위를 계산하는 데 사용됩니다. 이 함수들은 ORDER BY 구문과 함께 OVER 구문을 사용하여 쿼리 내에서 정렬 및 분류를 수행합니다. PARTITION BY 절을 사용하여 데이터를 파티션화하고, 그룹별로 순위를 계산할 수 있습니다.

    이 글에서는 Oracle RANK 및 DENSE_RANK 함수의 사용 방법에 대해 자세히 알아보겠습니다. RANK 및 DENSE_RANK 함수를 사용하여 데이터를 정렬하고, 순위를 계산하는 방법과 함께, OVER 및 PARTITION BY 구문의 사용 방법에 대해서도 다룰 것입니다.

    1. RANK 함수

    데이터 집합 내에서 순위를 계산하고, 동일한 값이 있으면 같은 순위를 부여합니다. 예를 들어, 1위, 2위, 2위, 4위와 같이 중복된 순위를 가질 수 있습니다.

    사용방법

    -- RANK 함수 사용 방법
    SELECT name, score, RANK() OVER (ORDER BY score DESC) AS rank
    FROM scores;

    2. DENSE_RANK 함수

    데이터 집합 내에서 순위를 계산하고, 동일한 값이 있으면 다음 순위를 건너뜁니다. 예를 들어, 1위, 2위, 2위, 3위와 같이 중복된 순위가 있으면, DENSE_RANK 함수는 1위, 2위, 2위, 3위와 같은 결과를 반환합니다.

    사용방법

    -- DENSE_RANK 함수 사용 방법
    SELECT name, score, DENSE_RANK() OVER (ORDER BY score DESC) AS dense_rank
    FROM scores;

    3. PARTITION BY

    PARTITION BY 절을 사용하여 데이터를 파티션화하여 그룹별로 순위를 계산할 수도 있습니다. 예를 들어, 팀별로 순위를 계산하려면 다음과 같은 쿼리를 사용할 수 있습니다.

    사용방법

    -- PARTITION BY 절 사용 방법
    SELECT team, name, score, RANK() OVER (PARTITION BY team ORDER BY score DESC) AS rank
    FROM scores;

    위의 예시에서, scores 테이블에서 team, name, score 열을 선택하고, RANK 함수를 사용하여 각 팀의 선수들의 score에 대한 순위를 계산합니다. PARTITION BY 구문을 사용하여 team 열을 기준으로 데이터를 파티션화하며, ORDER BY 구문을 사용하여 score 열을 내림차순으로 정렬합니다.

    댓글

    Designed by JB FACTORY