quantileExactWeightedInterpolated
도입 버전: v24.10.0
각 요소의 가중치를 고려해 선형 보간을 사용하여 숫자 데이터 시퀀스의 분위수를 계산합니다.
보간된 값을 구하기 위해 전달된 모든 값을 배열로 결합한 다음, 각 값에 해당하는 가중치에 따라 정렬합니다. 그런 다음 가중치를 기반으로 누적 분포를 구성한 후, 가중치와 값을 사용해 분위수를 계산하는 가중 백분위수 방법으로 분위수 보간을 수행합니다.
하나의 쿼리에서 수준이 서로 다른 여러 quantile* 함수를 사용하면 내부 상태가 결합되지 않습니다(즉, 쿼리가 최적의 효율로 동작하지 않습니다).
이 경우 quantiles 함수를 사용하십시오.
quantileExactWeightedInterpolated는 quantileInterpolatedWeighted보다 더 정확하므로, quantileInterpolatedWeighted 대신 quantileExactWeightedInterpolated를 사용하는 것을 강력히 권장합니다.
자세한 내용은 아래 예시를 참조하십시오.
구문
quantileExactWeightedInterpolated(level)(expr, weight)별칭: medianExactWeightedInterpolated
매개변수
level— 선택 사항입니다. 분위수 수준입니다. 0에서 1 사이의 상수 부동소수점 수입니다.level값은[0.01, 0.99]범위에서 사용하는 것을 권장합니다. 기본값은 0.5입니다.level=0.5이면 함수는 중앙값을 계산합니다.Float*
인수
expr— 컬럼 값에 대한 표현식이며, 결과는 숫자 데이터 타입,Date,DateTime또는DateTime64여야 합니다.(U)Int*또는Int128또는UInt128또는Int256또는UInt256또는Float*또는Decimal*또는Date또는DateTime또는DateTime64weight— 시퀀스 구성원의 가중치를 담은 컬럼입니다. 가중치는 값이 나타나는 횟수를 의미합니다.UInt*
반환 값
지정된 수준의 분위수입니다. 숫자 인수는 Float64를 반환하고, Decimal, Date, DateTime, DateTime64 인수는 입력 포맷을 유지합니다. Float64 또는 Decimal* 또는 Date 또는 DateTime 또는 DateTime64
예시
정확한 가중 보간 분위수 계산
CREATE TABLE t (
n Int32,
val UInt32
) ENGINE = Memory;
INSERT INTO t VALUES (0, 3), (1, 2), (2, 1), (5, 4);
SELECT quantileExactWeightedInterpolated(n, val) FROM t;┌─quantileExactWeightedInterpolated(n, val)─┐
│ 1.5 │
└───────────────────────────────────────────┘quantileInterpolatedWeighted 대신 quantileExactWeightedInterpolated를 사용하는 것이 좋습니다
SELECT
quantileExactWeightedInterpolated(0.99)(number, 1),
quantile(0.99)(number),
quantileInterpolatedWeighted(0.99)(number, 1)
FROM numbers(9)┌─quantileExactWeightedInterpolated(0.99)(number, 1)─┬─quantile(0.99)(number)─┬─quantileInterpolatedWeighted(0.99)(number, 1)─┐
│ 7.92 │ 7.92 │ 8 │
└────────────────────────────────────────────────────┴────────────────────────┴───────────────────────────────────────────────┘관련 항목