다음을 통해 공유


PERCENT_RANK(Transact-SQL)

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Microsoft Fabric의 SQL 분석 엔드포인트 Microsoft Fabric의 웨어하우스

SQL Server의 행 그룹 내에서 행의 상대 순위를 계산합니다. 쿼리 결과 집합 또는 파티션 내에서 값의 상대 순위를 평가하는 데 사용합니다 PERCENT_RANK . PERCENT_RANK는 CUME_DIST 함수와 비슷합니다.

구문

PERCENT_RANK( )
    OVER ( [ partition_by_clause ] order_by_clause )

인수

OVER ( [ partition_by_clause ] order_by_clause )

첫 번째 매개 변수인 partition_by_clause 절에서 생성된 FROM 결과 집합을 함수가 적용되는 파티션으로 나눕니다. 지정하지 않을 경우 쿼리 결과 집합의 모든 행이 단일 그룹으로 취급됩니다. order_by_clause 두 번째 매개 변수는 작업이 수행되는 논리적 순서를 결정합니다. order_by_clause가 필요합니다. <rows or range clause> 구문은 OVER 함수에 PERCENT_RANK 지정할 수 없습니다. 자세한 내용은 SELECT - OVER 절을 참조하세요.

반환 형식

float(53)

설명

반환되는 PERCENT_RANK 값의 범위가 보다 크거나 작 0 거나 같습니다 1. 모든 집합의 첫 번째 행에는 다음의 0행이 있습니다PERCENT_RANK. NULL 값은 기본적으로 포함되며 가능한 가장 낮은 값으로 처리됩니다.

PERCENT_RANK는 비결정적입니다. 자세한 내용은 결정적 함수와 비결정적 함수를 참조하세요.

예제

이 문서의 Transact-SQL 코드 샘플은 AdventureWorks2022 또는 AdventureWorksDW2022 샘플 데이터베이스를 사용하며, 이는 Microsoft SQL Server 예시 및 커뮤니티 프로젝트(Microsoft SQL Server Samples and Community Projects) 홈 페이지에서 다운로드할 수 있습니다.

다음 예제에서는 함수를 CUME_DIST 사용하여 지정된 부서 내의 각 직원에 대한 급여 백분위수 계산을 수행합니다. 함수에서 CUME_DIST 반환하는 값은 동일한 부서의 현재 직원보다 작거나 같은 급여를 가진 직원의 백분율을 나타냅니다. 이 함수는 PERCENT_RANK 부서 내 직원 급여의 순위를 백분율로 계산합니다. PARTITION BY 절은 부서별로 결과 집합의 행을 분할하도록 지정됩니다. 절의 OVER 절은 ORDER BY 각 파티션의 행을 정렬합니다. 문의 절 SELECTORDER BY 전체 결과 집합의 행을 정렬합니다.

USE AdventureWorks2022;
GO

SELECT Department,
    LastName,
    Rate,
    CUME_DIST() OVER (PARTITION BY Department ORDER BY Rate) AS CumeDist,
    PERCENT_RANK() OVER (PARTITION BY Department ORDER BY Rate) AS PctRank
FROM HumanResources.vEmployeeDepartmentHistory AS edh
INNER JOIN HumanResources.EmployeePayHistory AS e
    ON e.BusinessEntityID = edh.BusinessEntityID
WHERE Department IN (N'Information Services', N'Document Control')
ORDER BY Department, Rate DESC;

결과 집합은 다음과 같습니다.

Department             LastName               Rate              CumeDist           PctRank
---------------------- ---------------------- ----------------- ------------------ ------------------
Document Control       Arifin                 17.7885           1                  1
Document Control       Norred                 16.8269           0.8                0.5
Document Control       Kharatishvili          16.8269           0.8                0.5
Document Control       Chai                   10.25             0.4                0
Document Control       Berge                  10.25             0.4                0
Information Services   Trenary                50.4808           1                  1
Information Services   Conroy                 39.6635           0.9                0.888888888888889
Information Services   Ajenstat               38.4615           0.8                0.666666666666667
Information Services   Wilson                 38.4615           0.8                0.666666666666667
Information Services   Sharma                 32.4519           0.6                0.444444444444444
Information Services   Connelly               32.4519           0.6                0.444444444444444
Information Services   Berg                   27.4038           0.4                0
Information Services   Meyyappan              27.4038           0.4                0
Information Services   Bacon                  27.4038           0.4                0
Information Services   Bueno                  27.4038           0.4                0