RANK

RANK (순위 - 간격 포함)

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

RANK()는 윈도우의 ORDER BY 절에서 동등하게 비교되는 피어 행에 같은 순위를 부여해요. 다음 순위는 동률 행 수만큼 앞으로 건너뜁니다.

출처: 문서

본문

RANK()

사용 참고 사항

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

예시

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

SELECT
    FirstName,
    LastName,
    SalesYTD,
    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 4

부서 내 직원을 급여로 순위 매깁니다.

SELECT
    department,
    employee_name,
    salary,
    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 4
Sales Eve 130000 1
Sales Frank 120000 2

더 알아보기 (Learn more)