RANK(Transact-SQL)
결과 집합의 파티션 내에 있는 각 행의 순위를 반환합니다. 요청한 행의 순위는 해당 행 앞에 있는 행의 순위에 1을 더한 값입니다.
구문
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 BY
는 RANK
을 정렬하고 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)