APPROX_PERCENTILE
APPROX_PERCENTILE
APPROX_PERCENTILE() 함수는 원하는 백분위수에 대한 근사 값을 반환해요 (즉, 열 c에 n개의 숫자가 있으면 APPROX_PERCENTILE(c, p)는 c의 숫자 중 대략 n * p 개가 반환된 숫자보다 작도록 하는 숫자를 반환해요).
이 함수는 개선된 버전의 t-Digest 알고리즘을 사용해요. 자세한 내용은 백분위수 값 추정하기 문서를 참고하세요.
본문
문법
집계 함수 (Aggregate function):
APPROX_PERCENTILE( <expr> , <percentile> )
윈도우 함수 (Window function):
APPROX_PERCENTILE( <expr> , <percentile> ) OVER ( [ PARTITION BY <expr3> ] )
인자
expr — 열 이름 같은, 숫자 값으로 평가되는 유효한 표현식이에요.
percentile — 0.0 이상 1.0 미만의 상수 실수 값이에요. 백분위수(0부터 99.999…)를 나타내요. 예를 들어 0.65는 65번째 백분위수를 나타내요.
expr3 — 행을 파티션으로 그룹화하는 데 사용되는 선택적 표현식이에요.
반환
출력은 DOUBLE 값으로 반환돼요.
사용 노트
- 백분위수는 숫자 값에서만 동작하므로,
expr은 숫자이거나 숫자로 캐스팅될 수 있는 값을 만들어야 해요. - 반환되는 값이 데이터 집합에 반드시 존재하는 것은 아니에요.
- 반환되는 값은 근삿값이에요. 데이터 집합의 크기와 데이터 집합의 왜곡(skew)이 근사 정확도에 영향을 줘요.
- 이 함수를 윈도우 함수로 호출할 때는 다음을 지원하지 않아요.
- OVER 절 안의 ORDER BY 절.
- 명시적 윈도우 프레임.
- 소수 부동소수점(DECFLOAT) 값은 지원하지 않아요.
예제
APPROX_PERCENTILE 함수를 확인해 봐요.
값을 담은 테이블을 만들고 채워요:
CREATE TABLE testtable (c1 INTEGER);
INSERT INTO testtable (c1) VALUES
(0), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
쿼리를 실행하고 출력을 확인해요:
SELECT APPROX_PERCENTILE(c1, 0.1)
FROM testtable;
+----------------------------+
| APPROX_PERCENTILE(C1, 0.1) |
|----------------------------|
| 1.5 |
+----------------------------+
SELECT APPROX_PERCENTILE(c1, 0.5)
FROM testtable;
+----------------------------+
| APPROX_PERCENTILE(C1, 0.5) |
|----------------------------|
| 5.5 |
+----------------------------+
이 경우 반환된 값이 실제 데이터 집합의 어떤 값보다 높다는 점에 주의하세요:
SELECT APPROX_PERCENTILE(c1, 0.999)
FROM testtable;
+------------------------------+
| APPROX_PERCENTILE(C1, 0.999) |
|------------------------------|
| 10.5 |
+------------------------------+