quantileTimingWeighted
도입 버전: v1.1.0
지정된 정밀도로, 숫자 데이터 시퀀스에서 각 요소의 가중치에 따라 분위수를 계산합니다.
결과는 결정적입니다(즉, 쿼리 처리 순서에 의존하지 않습니다). 이 함수는 웹 페이지 로딩 시간이나 백엔드 응답 시간처럼 분포를 나타내는 시퀀스를 처리하는 데 최적화되어 있습니다.
하나의 쿼리에서 수준이 서로 다른 여러 quantile* 함수를 사용하면 내부 상태가 결합되지 않습니다(즉, 쿼리가 최대로 효율적으로 동작하지 않습니다). 이 경우 quantiles 함수를 사용하십시오.
정확도
다음 경우 계산 결과는 정확합니다:
- 전체 값 개수가 5670개를 초과하지 않습니다.
- 전체 값 개수가 5670개를 초과하더라도 페이지 로딩 시간이 1024ms 미만입니다.
그렇지 않으면 계산 결과는 가장 가까운 16ms 배수로 반올림됩니다.
구문
quantileTimingWeighted(level)(expr, weight)별칭: medianTimingWeighted
매개변수
level— 선택 사항입니다. 분위수 레벨입니다. 0에서 1 사이의 상수 부동소수점 숫자입니다.level값은[0.01, 0.99]범위에서 사용하는 것을 권장합니다. 기본값은 0.5입니다.level=0.5이면 함수는 중앙값을 계산합니다.Float*
인수
expr— 컬럼 값에 대해 평가되는 표현식으로, 숫자 데이터 타입,Date또는DateTime을 반환합니다. 함수에 음수 값이 전달되면 동작은 정의되지 않습니다. 값이 30,000보다 크면(페이지 로딩 시간이 30초를 초과하면) 30,000으로 간주합니다.(U)Int*또는Float*또는Date또는DateTimeweight— 시퀀스 요소의 가중치를 담은 컬럼입니다. 가중치는 값이 나타나는 횟수를 나타내는 숫자입니다.UInt*
반환 값
지정된 레벨의 분위수입니다. Float32
예시
가중치가 적용된 타이밍 분위수 계산
CREATE TABLE t (response_time UInt32, weight UInt32) ENGINE = Memory;
INSERT INTO t VALUES (68, 1), (104, 2), (112, 3), (126, 2), (138, 1), (162, 1);
SELECT quantileTimingWeighted(response_time, weight) FROM t;┌─quantileTimingWeighted(response_time, weight)─┐
│ 112 │
└───────────────────────────────────────────────┘