본문으로 바로가기
본문으로 바로가기

quantiles 함수

quantiles

도입 버전: v1.1

숫자 데이터 시퀀스에 대해 서로 다른 여러 수준의 근사 quantiles를 동시에 계산합니다.

이 함수는 최대 8192 크기의 저장소(reservoir)를 사용하는 reservoir sampling과 샘플링을 위한 난수 생성기를 적용합니다. 결과는 결정적이지 않습니다.

여러 개의 분위수 값을 계산해야 할 때 quantiles를 사용하면, 각 분위수마다 개별적으로 quantile 함수를 여러 번 호출하는 것보다 더 효율적입니다. 모든 분위수가 데이터에 대해 한 번만 순회하면서 계산되기 때문입니다.

구문

quantiles(level1, level2, ...)(expr)

파라미터

  • level — 분위수의 레벨입니다. 0 이상 1 이하의 상수 부동 소수점 수를 하나 이상 지정합니다. level 값은 [0.01, 0.99] 범위에서 사용할 것을 권장합니다. Float*

인자

  • expr — 컬럼 값에 대해 적용되며, 숫자 데이터 타입, Date 또는 DateTime 결과를 생성하는 표현식입니다. (U)Int* 또는 Float* 또는 Decimal* 또는 Date 또는 DateTime

반환 값

지정된 레벨에 대한 근사 분위수의 배열로, 레벨이 지정된 것과 동일한 순서를 가집니다. Array(Float64) 또는 Array(Date) 또는 Array(DateTime)

예시

여러 분위수를 효율적으로 계산하기

CREATE TABLE t (val UInt32) ENGINE = Memory;
INSERT INTO t VALUES (1), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);

SELECT quantiles(0.25, 0.5, 0.75, 0.9)(val) FROM t;
┌─quantiles(0.25, 0.5, 0.75, 0.9)(val)─┐
│ [3, 5.5, 8, 9.5]                     │
└──────────────────────────────────────┘