기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
PERCENTILE_CONT 함수
PERCENTILE_CONT는 연속 배포 모델을 수임하는 역분포 함수입니다. 백분위 값과 정렬 명세를 가지며, 정렬 명세와 관련하여 지정된 백분위 값에 해당하는 보간 값을 반환합니다.
PERCENTILE_CONT는 정렬 후 값 간의 선형 보간을 계산합니다. 이 함수는 집계 그룹에서 백분위 값(P)
과 NULL을 제외한 행들의 번호(N)
를 사용하여 정렬 명세에 따라 행의 순서를 지정한 후 행 번호를 계산합니다. 행 번호(RN)
를 계산하는 공식은 RN = (1+ (P*(N-1))
입니다. 이 집계 함수의 최종 결과는 행 번호가 CRN = CEILING(RN)
과 FRN = FLOOR(RN)
인 행의 값 사이 선형 보간을 통해 계산됩니다.
최종 결과는 다음과 같습니다.
(CRN = FRN = RN)
일 때 결과는 (value of expression from row at
RN)
입니다.
그렇지 않다면 다음 결과가 표시됩니다.
(CRN - RN) * (value of expression for row at FRN) + (RN - FRN) * (value of expression
for row at CRN)
.
PERCENTILE_CONT는 컴퓨팅 노드 전용 함수입니다. 쿼리가 사용자 정의 테이블 또는 AWS Clean Rooms 시스템 테이블을 참조하지 않으면 함수가 오류를 반환합니다.
구문
PERCENTILE_CONT ( percentile ) WITHIN GROUP (ORDER BY expr)
인수
- Percentile
-
0과 1 사이의 숫자 상수입니다. 이 계산에서 Null 값은 무시됩니다.
- WITHIN GROUP (ExprORDER별)
-
숫자 또는 날짜/시간 값을 지정하여 백분위를 정렬 및 계산합니다.
반환
반환 유형은 WITHIN GROUP 절에서 ORDER BY 표현식의 데이터 유형에 따라 결정됩니다. 다음 표는 각 ORDER BY 표현식 데이터 형식의 반환 유형을 보여줍니다.
입력 유형 | 반환 타입 |
---|---|
SMALLINT, INTEGER, BIGINT, NUMERIC, DECIMAL | DECIMAL |
FLOAT, DOUBLE | DOUBLE |
DATE | DATE |
TIMESTAMP | TIMESTAMP |
TIMESTAMPTZ | TIMESTAMPTZ |
사용 노트
ORDER BY 표현식이 최대 정밀도가 38자리로 정의된 DECIMAL 데이터 형식인 경우 PERCENTILE_CONT가 부정확한 결과 또는 오류를 반환할 수 있습니다. PERCENTILE_CONT 함수의 반환 값이 38자리를 초과하면 결과에 맞게 잘려 정밀도가 떨어집니다. 보간 도중 중간 결과가 최대 정밀도를 초과하면 수치 오버플로우가 발생하고 함수는 오류를 반환합니다. 이러한 조건을 방지하려면 정밀도가 낮은 데이터 형식을 사용하거나 ORDER BY 표현식을 정밀도가 낮은 데이터 형식으로 캐스팅하는 것이 좋습니다.
문에 정렬 기반 집계 함수(LISTAGG, PERCENTILE_ CONT또는 MEDIAN)에 대한 여러 호출이 포함된 경우 모두 동일한 ORDER BY 값을 사용해야 합니다. 는 표현식 값에를 사용하여 암시적 순서를 MEDIAN 적용합니다.
예를 들어 다음과 같은 문은 오류를 반환합니다.
select top 10 salesid, sum(pricepaid), percentile_cont(0.6) within group (order by salesid), median (pricepaid) from sales group by salesid, pricepaid; An error occurred when executing the SQL command: select top 10 salesid, sum(pricepaid), percentile_cont(0.6) within group (order by salesid), median (pricepaid) from sales group by salesid, pricepai... ERROR: within group ORDER BY clauses for aggregate functions must be the same
다음 문은 성공적으로 실행됩니다.
select top 10 salesid, sum(pricepaid), percentile_cont(0.6) within group (order by salesid), median (salesid) from sales group by salesid, pricepaid;
예시
다음 예제는가 PERCENTILE_CONT(0.5)와 동일한 결과를 MEDIAN 생성하는 것을 보여줍니다.
select top 10 distinct sellerid, qtysold, percentile_cont(0.5) within group (order by qtysold), median (qtysold) from sales group by sellerid, qtysold; sellerid | qtysold | percentile_cont | median ---------+---------+-----------------+------- 1 | 1 | 1.0 | 1.0 2 | 3 | 3.0 | 3.0 5 | 2 | 2.0 | 2.0 9 | 4 | 4.0 | 4.0 12 | 1 | 1.0 | 1.0 16 | 1 | 1.0 | 1.0 19 | 2 | 2.0 | 2.0 19 | 3 | 3.0 | 3.0 22 | 2 | 2.0 | 2.0 25 | 2 | 2.0 | 2.0