quantileExactWeighted
quantileExactWeighted
숫자 데이터 수열의 분위수를 각 요소의 가중치(weight)를 고려해 정확히 계산하는 집계 함수예요. v1.1.0부터 도입되었어요.
출처: 문서
본문
숫자 데이터 수열의 분위수를 각 요소의 가중치를 고려해 정확히 계산해요. 정확한 값을 얻기 위해 전달된 모든 값이 하나의 배열로 결합된 뒤 부분 정렬돼요. 각 값은 가중치만큼 존재하는 것처럼 그 가중치로 집계돼요. 알고리즘에는 해시 테이블이 사용돼요. 이 때문에 전달된 값이 자주 반복된다면 quantileExact보다 RAM을 덜 소비해요. quantileExact 대신 이 함수를 사용하고 가중치 1을 지정할 수도 있어요.
쿼리에서 서로 다른 수준(level)의 여러 quantile* 함수를 사용하면 내부 상태가 결합되지 않아요(즉, 쿼리가 가능한 것보다 덜 효율적으로 동작해요). 이 경우에는 quantiles 함수를 사용하세요.
구문 (Syntax)
quantileExactWeighted(level)(expr, weight)
별칭(Aliases): medianExactWeighted
파라미터 (Parameters)
level— 선택사항이에요. 분위수의 수준이에요. 0부터 1까지의 상수 부동소수점 수예요.[0.01, 0.99]범위의 수준 값을 사용하는 것을 권장해요. 기본값:0.5.level=0.5에서는 함수가 중앙값을 계산해요.Float*
인자 (Arguments)
expr— 숫자 데이터 타입,Date,DateTime또는DateTime64를 결과로 내는 컬럼 값에 대한 표현식이에요.(U)Int*또는Int128또는UInt128또는Int256또는UInt256또는Float*또는Decimal*또는Date또는DateTime또는DateTime64weight— 수열 멤버의 가중치를 담은 컬럼이에요. 가중치는 값의 발생 횟수예요.UInt*
반환 값 (Returned value)
지정된 수준의 분위수예요. 숫자 데이터 타입의 경우 출력 형식이 입력 형식과 일치해요. (U)Int* 또는 Int128 또는 UInt128 또는 Int256 또는 UInt256 또는 Float* 또는 Decimal* 또는 Date 또는 DateTime 또는 DateTime64
예시 (Examples)
정확한 가중 분위수 계산:
CREATE TABLE t (
n Int32,
val UInt32
) ENGINE = Memory;
-- 샘플 데이터 삽입
INSERT INTO t VALUES
(0, 3),
(1, 2),
(2, 1),
(5, 4);
SELECT quantileExactWeighted(n, val) FROM t;
결과:
┌─quantileExactWeighted(n, val)─┐
│ 1 │
└───────────────────────────────┘
참고 (See Also)
- median
- quantiles