적용 대상:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
분석 플랫폼 시스템(PDW)
Microsoft Fabric의 SQL 분석 엔드포인트
Microsoft Fabric의 웨어하우스
Microsoft Fabric의 SQL 데이터베이스
SQL Server 데이터베이스 엔진 열 값의 연속 분포를 기반으로 백분위수 계산 결과는 보간되며 열의 특정 값과 같지 않을 수 있습니다.
구문
PERCENTILE_CONT ( numeric_literal )
WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )
OVER ( [ <partition_by_clause> ] )
인수
numeric_literal
계산할 백분위수입니다. 값의 범위는 다음 사이 0.0 여야 1.0합니다.
WITHIN GROUP(order by order_by_expression )
정렬할 숫자 값 목록을 지정하고 백분위수를 컴퓨팅합니다. order_by_expression은 하나만 허용됩니다. 식은 정확하거나 근사치 숫자 형식으로 계산되어야 하며, 다른 데이터 유형은 허용되지 않습니다. 정확한 숫자 형식은 int, bigint, smallint, tinyint, numeric, bit, decimal, smallmoney 및 money입니다. 근사치 숫자 형식은 float 및 real입니다. 기본 정렬 순서는 오름차순입니다.
OVER( <partition_by_clause> )
절에서 생성된 결과 집합을 FROM 백분위수 함수가 적용되는 파티션으로 나눕니다. 자세한 내용은 SELECT - OVER 절을 참조하세요.
ORDER BY 함수에서 <rows or range clause> 구문과 OVER 절을 지정할 PERCENTILE_CONT 수 없습니다.
반환 형식
float(53)
호환성 지원
WITHIN GROUP 는 호환성 수준 110부터 시작하는 예약 키워드입니다. 자세한 내용은 ALTER DATABASE 호환성 수준을 참조하세요.
설명
모든 null은 데이터 집합에서 무시됩니다.
PERCENTILE_CONT는 비결정적입니다. 자세한 내용은 Deterministic and Nondeterministic Functions을 참조하세요.
예제
이 문서의 코드 샘플은 AdventureWorks2025 또는 AdventureWorksDW2025 샘플 데이터베이스를 사용합니다. 이 데이터베이스는 Microsoft SQL Server 샘플 및 커뮤니티 프로젝트 홈페이지에서 다운로드할 수 있습니다.
A. 부서당 평균 직원 급여 찾기
다음 예제에서는 각 부서에서 직원 급여의 중간값을 사용하고 PERCENTILE_CONTPERCENTILE_DISC 찾습니다. 이러한 함수는 동일한 값을 반환하지 않을 수 있습니다.
PERCENTILE_CONT 데이터 집합에 존재할 수도 있고 없을 수도 있는 적절한 값을 보간하고 PERCENTILE_DISC 항상 집합의 실제 값을 반환합니다.
USE AdventureWorks2022;
GO
SELECT DISTINCT Name AS DepartmentName,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY ph.Rate)
OVER (PARTITION BY Name) AS MedianCont,
PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY ph.Rate)
OVER (PARTITION BY Name) AS MedianDisc
FROM HumanResources.Department AS d
INNER JOIN HumanResources.EmployeeDepartmentHistory AS dh
ON dh.DepartmentID = d.DepartmentID
INNER JOIN HumanResources.EmployeePayHistory AS ph
ON ph.BusinessEntityID = dh.BusinessEntityID
WHERE dh.EndDate IS NULL;
다음은 결과 집합의 일부입니다.
DepartmentName MedianCont MedianDisc
-------------------- ---------- ----------
Document Control 16.8269 16.8269
Engineering 34.375 32.6923
Executive 54.32695 48.5577
Human Resources 17.427850 16.5865
예: Azure Synapse Analytics 및 분석 플랫폼 시스템(PDW)
다음 예제에서는 샘플 데이터베이스를 AdventureWorksDW2012 사용합니다.
B. 부서당 평균 직원 급여 찾기
다음 예제에서는 각 부서에서 직원 급여의 중간값을 사용하고 PERCENTILE_CONTPERCENTILE_DISC 찾습니다. 이러한 함수는 동일한 값을 반환하지 않을 수 있습니다.
PERCENTILE_CONT 데이터 집합에 존재할 수도 있고 없을 수도 있는 적절한 값을 보간하고 PERCENTILE_DISC 항상 집합의 실제 값을 반환합니다.
SELECT DISTINCT DepartmentName,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY BaseRate)
OVER (PARTITION BY DepartmentName) AS MedianCont,
PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY BaseRate)
OVER (PARTITION BY DepartmentName) AS MedianDisc
FROM dbo.DimEmployee;
다음은 결과 집합의 일부입니다.
DepartmentName MedianCont MedianDisc
-------------------- ---------- ----------
Document Control 16.826900 16.8269
Engineering 34.375000 32.6923
Human Resources 17.427850 16.5865
Shipping and Receiving 9.250000 9.0000