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 │
└─────────────┴──────────┴─────────────────────────┴──────────────────────┘