Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

quantileExactWeighted

quantileExactWeighted

도입 버전: v1.1.0

각 요소의 가중치를 고려하여 숫자 데이터 시퀀스의 분위수를 정확하게 계산합니다.

정확한 값을 구하기 위해 전달된 모든 값은 하나의 배열로 합쳐진 다음 부분 정렬됩니다. 각 값은 해당 값이 weight번 존재하는 것처럼 가중치를 반영하여 계산됩니다. 알고리즘에는 해시 테이블이 사용됩니다. 따라서 전달된 값이 자주 반복되면 이 함수는 quantileExact보다 RAM을 더 적게 사용합니다. 이 함수는 quantileExact 대신 사용할 수 있으며, 가중치로 1을 지정하면 됩니다.

하나의 쿼리에서 수준이 서로 다른 여러 quantile* 함수를 사용하면 내부 상태가 결합되지 않습니다(즉, 쿼리가 가능한 수준보다 비효율적으로 동작합니다). 이 경우 quantiles 함수를 사용하십시오.

구문

quantileExactWeighted(level)(expr, weight)

별칭: medianExactWeighted

매개변수

  • 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 또는 DateTime64
  • weight — 시퀀스 구성원의 가중치를 담은 컬럼입니다. 가중치는 값의 발생 횟수를 의미합니다. UInt*

반환 값

지정된 수준의 분위수입니다. 숫자 데이터 타입의 경우 출력 형식은 입력 형식과 일치합니다. (U)Int* 또는 Int128 또는 UInt128 또는 Int256 또는 UInt256 또는 Float* 또는 Decimal* 또는 Date 또는 DateTime 또는 DateTime64

예시

정확한 가중 분위수 계산

CREATE TABLE t (
    n Int32,
    val UInt32
) ENGINE = Memory;

-- Insert the sample data
INSERT INTO t VALUES
(0, 3),
(1, 2),
(2, 1),
(5, 4);

SELECT quantileExactWeighted(n, val) FROM t;
┌─quantileExactWeighted(n, val)─┐
│                             1 │
└───────────────────────────────┘

관련 항목

Navigation