카테고리:

집계 함수 (Percentile Estimation) , 윈도우 함수

APPROX_PERCENTILE

원하는 백분위수의 근삿값을 반환합니다(즉, 열 cn 개의 숫자가 있는 경우 APPROX_PERCENTILE(c, p)는 c 에 있는 숫자의 대략적인 n * p 가 반환된 숫자보다 작게 만드는 숫자를 반환함).

이 함수는 t-Digest 알고리즘의 개선된 버전을 사용합니다. 자세한 내용은 백분위수 값 추정하기 섹션을 참조하십시오.

참고 항목:

APPROX_PERCENTILE_ACCUMULATE , APPROX_PERCENTILE_COMBINE , APPROX_PERCENTILE_ESTIMATE

구문

집계 함수

APPROX_PERCENTILE( <expr> , <percentile> )
Copy

윈도우 함수

APPROX_PERCENTILE( <expr> , <percentile> ) OVER ( [ PARTITION BY <expr3> ] )
Copy

인자

expr

숫자 값으로 평가되는 유효한 식(예: 열 이름)입니다.

percentile

0.0 보다 크거나 같고 1.0 보다 작은 상수 실수 값입니다. 백분위수(0-99.999…)를 나타냅니다. 예: 값 0.65는 65번째 백분위수를 나타냅니다.

expr3

행을 파티션으로 그룹화하는 데 사용되는 선택적 식입니다.

반환

출력은 DOUBLE 값으로 반환됩니다.

사용법 노트

  • 백분위수는 숫자 값에서만 작동하므로 expr 은 숫자이거나 숫자로 캐스팅할 수 있는 값을 생성해야 합니다.

  • 반환된 값이 반드시 데이터 세트에 있는 것은 아닙니다.

  • 반환된 값은 근사치입니다. 데이터 세트의 크기와 데이터 세트의 왜곡은 근사치의 정확도에 영향을 줍니다.

  • 이 함수가 윈도우 함수로 호출되는 경우에는 다음을 지원하지 않습니다.

    • OVER 절 내의 ORDER BY 절.

    • 명시적 윈도우 프레임.

APPROX_PERCENTILE 함수를 보여줍니다.

값이 있는 테이블을 만들고 채웁니다.

CREATE TABLE testtable (c1 INTEGER);
INSERT INTO testtable (c1) VALUES 
    (0),
    (1),
    (2),
    (3),
    (4),
    (5),
    (6),
    (7),
    (8),
    (9),
    (10);
Copy

쿼리를 실행하고 출력을 표시합니다.

SELECT APPROX_PERCENTILE(c1, 0.1) FROM testtable;
+----------------------------+
| APPROX_PERCENTILE(C1, 0.1) |
|----------------------------|
|                        1.5 |
+----------------------------+
Copy
SELECT APPROX_PERCENTILE(c1, 0.5) FROM testtable;
+----------------------------+
| APPROX_PERCENTILE(C1, 0.5) |
|----------------------------|
|                        5.5 |
+----------------------------+
Copy

이 경우에서 반환된 값은 실제로 데이터 세트에 있는 어떤 값보다도 높습니다.

SELECT APPROX_PERCENTILE(c1, 0.999) FROM testtable;
+------------------------------+
| APPROX_PERCENTILE(C1, 0.999) |
|------------------------------|
|                         10.5 |
+------------------------------+
Copy