카테고리:

집계 함수 (백분위수 추정) , 윈도우 함수

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