RANK(Transact-SQL)

결과 집합의 파티션 내에 있는 각 행의 순위를 반환합니다. 요청한 행의 순위는 해당 행 앞에 있는 행의 순위에 1을 더한 값입니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

RANK ( )    OVER ( [ < partition_by_clause > ] < order_by_clause > )

인수

  • < partition_by_clause >
    FROM 절이 생성한 결과 집합을 RANK 함수가 적용되는 파티션으로 나눕니다. PARTITION BY 구문은 OVER 절(Transact-SQL)을 참조하십시오.
  • < order_by_clause >
    파티션의 행에 RANK 값이 적용되는 순서를 결정합니다. 자세한 내용은 ORDER BY 절(Transact-SQL)를 참조하십시오. 순위 함수에 <order_by_clause>가 사용된 경우 정수는 열을 나타낼 수 없습니다.

반환 유형

bigint

주의

하나의 순위에 둘 이상의 행이 결합되면 결합된 각 행은 동일한 순위를 갖게 됩니다. 예를 들어 성과가 가장 좋은 두 명의 판매 직원이 같은 SalesYTD 값을 갖는 경우 둘 다 1로 순위가 지정됩니다. 다음으로 높은 SalesYTD를 갖는 판매 직원은 더 높은 순위를 가진 행이 두 개이기 때문에 3위로 순위가 지정됩니다. 따라서 RANK 함수는 항상 연속적인 정수를 반환하지는 않습니다.

전체 쿼리에 사용되는 정렬 순서는 행이 결과 집합에 표시되는 순서를 결정합니다.

다음 예에서는 재고 수량을 기준으로 제품에 순위를 부여합니다. 행 집합은 LocationID별로 분할되며 Quantity를 기준으로 정렬됩니다. OVER 절의 ORDER BYRANK을 정렬하고 SELECT 문의 ORDER BY는 결과 집합을 정렬합니다.

USE AdventureWorks;
GO
SELECT i.ProductID, p.Name, i.LocationID, i.Quantity
    ,RANK() OVER 
    (PARTITION BY i.LocationID ORDER BY i.Quantity DESC) AS 'RANK'
FROM Production.ProductInventory i 
    INNER JOIN Production.Product p 
        ON i.ProductID = p.ProductID
ORDER BY p.Name;
GO

참고 항목

참조

DENSE_RANK(Transact-SQL)
ROW_NUMBER(Transact-SQL)
NTILE(Transact-SQL)
순위 함수(Transact-SQL)
함수(Transact-SQL)

도움말 및 정보

SQL Server 2005 지원 받기