본문으로 바로가기
본문으로 바로가기

quantileExactWeighted

quantileExactWeighted

도입 버전: v1.1

숫자 데이터 시퀀스에 대해 각 요소의 가중치를 고려하여 quantile을 정확하게 계산합니다.

정확한 값을 얻기 위해 전달된 모든 값을 배열로 결합한 다음, 이 배열을 부분 정렬합니다. 각 값은 마치 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에서는 함수가 중앙값(median)을 계산합니다. Float*

인자

  • expr — 컬럼 값에 대해 평가되어 숫자 데이터 타입, Date 또는 DateTime 값을 반환하는 표현식입니다. (U)Int* 또는 Float* 또는 Decimal* 또는 Date 또는 DateTime
  • weight — 시퀀스 요소의 가중치가 저장된 컬럼입니다. 가중치는 해당 값의 발생 횟수입니다. UInt*

반환값

지정된 레벨의 분위수입니다. Float64 또는 Date 또는 DateTime

예시

가중 분위수의 정확한 계산

CREATE TABLE t (
    n Int32,
    val Int32
) 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 │
└───────────────────────────────┘

함께 보기