quantiles

quantiles

숫자 데이터 수열에서 여러 수준의 근사 분위수를 동시에 계산하는 함수입니다. quantile 함수를 여러 번 호출하는 것보다 효율적이며, 단일 패스로 모든 분위수를 구합니다.

출처: 문서

본문

Quantiles 함수는 각기 다른 수준의 근사 분위수를 한 번에 계산합니다. 내부적으로 reservoir sampling(표본 크기 최대 8192)과 난수 생성기를 사용하므로 결과는 **비결정적(non-deterministic)**입니다.

여러 개의 quantile 함수를 나눠 호출하는 것보다 하나의 quantiles 호출이 데이터를 한 번만 통과하므로 더 효율적입니다.

도입 버전: v1.1.0

Syntax

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

Parameters

  • level — 분위수 수준들. 0부터 1 사이의 상수 부동소수점 값으로, 하나 이상 지정할 수 있습니다. [0.01, 0.99] 범위 사용을 권장합니다. Float*

Arguments

  • expr — 값 열에 대한 표현식. (U)Int*, Int128/UInt128, Int256/UInt256, Float*, Decimal*, Date, DateTime, DateTime64 타입의 결과를 반환합니다.

Returned value

  • 지정한 수준들의 순서와 같은 배열 형태의 근사 분위수 값들. 숫자 인자는 Float64를, Decimal/Date/DateTime/DateTime64 인자는 입력 형식을 유지합니다. Array(Float64) 또는 Array(Decimal*) 또는 Array(Date) 또는 Array(DateTime) 또는 Array(DateTime64)

Example

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

Query:

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

SELECT quantiles(0.25, 0.5, 0.75, 0.9)(val) FROM t;

Response:

┌─quantiles(0.25, 0.5, 0.75, 0.9)(val)─┐
│ [2.5,5,7.5,9]                        │
└──────────────────────────────────────┘

더 알아보기 (Learn more)