quantiles
도입 버전: v1.1.0
숫자 데이터 시퀀스에 대해 서로 다른 수준의 근사 분위수를 여러 개 동시에 계산합니다.
이 함수는 저장소 크기가 최대 8192인 reservoir sampling과 샘플링을 위한 난수 생성기를 사용합니다. 결과는 비결정적입니다.
여러 개의 분위수 값이 필요할 때 quantiles를 사용하면 개별 quantile 함수를 여러 번 호출하는 것보다 효율적입니다. 모든 분위수를 데이터를 한 번만 순회하며 계산하기 때문입니다.
구문
quantiles(level1, level2, ...)(expr)매개변수
level— 분위수 수준입니다. 0에서 1 사이의 상수 부동소수점 숫자 1개 이상입니다.level값은[0.01, 0.99]범위에서 사용하는 것을 권장합니다.Float*
인수
expr— 컬럼 값에 대한 표현식입니다. 결과 타입은 숫자 데이터 타입,Date,DateTime또는DateTime64여야 합니다.(U)Int*또는Int128또는UInt128또는Int256또는UInt256또는Float*또는Decimal*또는Date또는DateTime또는DateTime64
반환 값
지정된 수준의 근사 분위수를, 수준을 지정한 순서와 동일한 순서로 담은 배열입니다. 숫자 인수는 Float64를 반환하며, Decimal, Date, DateTime, DateTime64 인수는 입력 형식을 유지합니다. Array(Float64) 또는 Array(Decimal*) 또는 Array(Date) 또는 Array(DateTime) 또는 Array(DateTime64)
예시
여러 분위수를 효율적으로 계산하기
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)─┐
│ [2.5,5,7.5,9] │
└──────────────────────────────────────┘