Share via


APPROX_PERCENTILE_DISC(Transact-SQL)

적용 대상: Microsoft Fabric의 Microsoft FabricWarehouse에 있는 SQL Server 2022(16.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL 분석 엔드포인트

이 함수는 제공된 백분위수 및 정렬 사양에 따라 그룹의 값 집합에서 값을 반환합니다. 대략적인 함수이므로 출력은 특정 신뢰도로 바인딩된 순위 기반 오류 내에 있습니다. 이 대략적인 백분위수는 열 값의 불연속 분포를 기반으로 하므로 출력 값은 열의 특정 값 중 하나와 같습니다. 이 함수는 응답 시간이 느린 정확한 백분위수 값에 비해 빠른 응답으로 무시할 수 있는 오류가 허용되는 대규모 데이터 세트의 경우 PERCENTILE_DISC의 대안으로 사용할 수 있습니다.

Transact-SQL 구문 규칙

구문

APPROX_PERCENTILE_DISC (numeric_literal)  
WITHIN GROUP (ORDER BY order_by_expression [ASC|DESC])

인수

numeric_literal

계산할 백분위수입니다. 값은 0.0에서 1.0 사이여야 합니다. 10번째 백분위수 계산을 위해 전달된 값은 0.10입니다.

order_by_expression

정렬할 값 목록을 지정하고 백분위수를 컴퓨팅합니다. 기본 정렬 순서는 ASC(오름차순)입니다.  숫자 데이터 형식만 허용됩니다. 식은 지원되는 정확한 또는 근사치 숫자 형식으로 계산되어야 하며, 다른 데이터 유형은 허용되지 않습니다. 지원되는 정확한 숫자 유형은 int, bigint, smallint, tinyint, bit, smallmoney 및 money입니다. 근사치 숫자 형식은 float 및 real입니다. 10진수 및 부동 소수점 데이터 형식은 지원되지 않습니다.

반환 형식

반환 형식은 order_by_expression 형식에 의해 결정됩니다.

설명

모든 null은 데이터 집합에서 무시됩니다.

대략적인 백분위수 함수는 KLL 스케치를 사용합니다. 스케치는 데이터 스트림을 읽어 빌드됩니다.

이 함수는 순위 기반 오류가 값 기반이 아님을 보장합니다. 함수 구현은 최대 99% 확률 중에 최대 1.33% 오류 비율을 보장합니다.

알려진 동작

  • 함수의 출력은 모든 실행에서 동일하지 않을 수 있습니다. 이러한 함수에 사용되는 알고리즘은 임의 알고리즘인 KLL 스케치입니다. 스케치가 작성될 때마다 임의의 값이 선택됩니다. 이러한 함수는 값 기반이 아닌 순위 기반 오류 보장을 제공합니다.

  • 함수 구현은 99% 신뢰도 내에서 최대 1.33% 오류 범위를 보장합니다.

호환성 지원

호환성 수준 110 이상에서 WITHIN GROUP은 예약 키워드입니다. 자세한 내용은 ALTER DATABASE 호환성 수준(Transact-SQL)을 참조하세요.

다음 예제에서는 테이블을 만들고, 채우고, 샘플 쿼리를 실행합니다.

SET NOCOUNT ON
GO
DROP TABLE IF EXISTS tblEmployee
GO
CREATE TABLE tblEmployee (
EmplId INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
DeptId INT,
Salary int);
GO
INSERT INTO tblEmployee
VALUES (1, 31),(1, 33), (1, 18), (2, 25),(2, 35),(2, 10), (2, 10),(3,1), (3,NULL), (4,NULL), (4,NULL)
GO
SELECT DeptId,
APPROX_PERCENTILE_DISC(0.10) WITHIN GROUP(ORDER BY Salary) AS 'P10',
APPROX_PERCENTILE_DISC(0.90) WITHIN GROUP(ORDER BY Salary) AS 'P90'
FROM tblEmployee
GROUP BY DeptId