sumWithOverflow

sumWithOverflow

입력 매개변수와 동일한 데이터 타입을 결과에 사용해서 숫자들의 합계를 계산해요. 합계가 이 데이터 타입의 최댓값을 초과하면 오버플로로 계산해요.

출처: 문서

본문

sumWithOverflow는 입력 매개변수와 동일한 데이터 타입을 결과에 사용해서 숫자 값들의 합계를 계산하는 집계 함수예요. v1.1.0에 도입되었어요.

합계가 이 데이터 타입의 최댓값을 초과하면 오버플로(overflow)로 계산해요.

구문 (Syntax)

sumWithOverflow(num)

인자 (Arguments)

반환 값 (Returned value)

값들의 합계를 반환해요.

  • (U)Int* 또는 Float* 또는 Decimal* 타입이에요.

예시 (Examples)

UInt16 타입에서 오버플로 동작을 보여 주는 예시예요.

쿼리:

CREATE TABLE employees
(
    id UInt32,
    name String,
    monthly_salary UInt16 -- selected so that the sum of values produces an overflow
)
ENGINE = Memory;

INSERT INTO employees VALUES
    (1, 'John', 20000),
    (2, 'Jane', 18000),
    (3, 'Bob', 12000),
    (4, 'Alice', 10000),
    (5, 'Charlie', 8000);

-- sum과 sumWithOverflow 함수로 직원 급여 총액을 구하고, toTypeName 함수로 그 타입을 보여 줍니다.
-- sum 함수의 결과 타입은 UInt64(합계를 담기에 충분히 큼)인 반면, sumWithOverflow의 결과 타입은 UInt16으로 유지됩니다.

SELECT
    sum(monthly_salary) AS no_overflow,
    sumWithOverflow(monthly_salary) AS overflow,
    toTypeName(no_overflow),
    toTypeName(overflow)
FROM employees;

응답:

┌─no_overflow─┬─overflow─┬─toTypeName(no_overflow)─┬─toTypeName(overflow)─┐
│       68000 │     2464 │ UInt64                  │ UInt16               │
└─────────────┴──────────┴─────────────────────────┴──────────────────────┘

더 알아보기 (Learn more)