DENSE\_RANK

DENSE_RANK (순위 - 간격 없음)

DENSE_RANK 윈도우 함수는 파티션 안의 현재 행의 순위를 반환하며, 동률(ties)일 때 간격(gaps)을 두지 않습니다.

DENSE_RANK()는 윈도우의 ORDER BY 절에서 동등하게 비교되는 피어 행에 같은 순위를 부여해요. 다음 서로 다른 값은 다음 연속 순위를 받습니다.

출처: 문서

본문

DENSE_RANK()

사용 참고 사항

  • DENSE_RANK()는 인자를 받지 않습니다.
  • 순위는 각 PARTITION BY 그룹마다 다시 시작됩니다.
  • 행 순위는 윈도우의 ORDER BY 절에 의해 결정됩니다.
  • 동률 행에는 같은 순위가 부여되고, 이후 순위는 연속적으로 유지됩니다.
  • DENSE_RANK()에는 명시적 윈도우 프레임 절을 지정할 수 없습니다.

예시

동률일 때 간격 없이 영업사원을 연간 누계 매출로 순위 매깁니다.

SELECT
    FirstName,
    LastName,
    SalesYTD,
    DENSE_RANK() OVER (ORDER BY SalesYTD DESC) AS sales_rank
FROM Sales.vSalesPerson;

출력:

FirstName LastName SalesYTD sales_rank
Joe Smith 2251368.34 1
Alice Davis 2151341.64 2
James Jones 2151341.64 2
Dane Scott 1251358.72 3

연속 순위를 사용해 부서 내 직원을 급여로 순위 매깁니다.

SELECT
    department,
    employee_name,
    salary,
    DENSE_RANK() OVER (
        PARTITION BY department
        ORDER BY salary DESC
    ) AS salary_rank
FROM employees;

출력:

department employee_name salary salary_rank
Engineering Alice 160000 1
Engineering Bob 150000 2
Engineering Carol 150000 2
Engineering Dave 140000 3
Sales Eve 130000 1
Sales Frank 120000 2

더 알아보기 (Learn more)