Pular para o conteúdo principal

sumWithOverflow

Introduzido em: v1.1.0 Calcula a soma de valores numéricos usando, no resultado, o mesmo tipo de dado dos parâmetros de entrada. Se a soma exceder o valor máximo desse tipo de dado, ela será calculada com overflow. Sintaxe
sumWithOverflow(num)
Argumentos Valor retornado A soma dos valores. (U)Int* ou Float* ou Decimal* Exemplos Demonstrando o comportamento de overflow com UInt16
Query
CREATE TABLE employees
(
    id UInt32,
    name String,
    monthly_salary UInt16 -- selecionado para que a soma dos valores produza um overflow
)
ENGINE = Memory;

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

-- Consulta para o valor total dos salários dos funcionários usando as funções sum e sumWithOverflow e exibe seus tipos usando a função toTypeName
-- Para a função sum, o tipo resultante é UInt64, grande o suficiente para conter a soma, enquanto para sumWithOverflow o tipo resultante permanece UInt16.

SELECT
    sum(monthly_salary) AS no_overflow,
    sumWithOverflow(monthly_salary) AS overflow,
    toTypeName(no_overflow),
    toTypeName(overflow)
FROM employees;
Response
┌─no_overflow─┬─overflow─┬─toTypeName(no_overflow)─┬─toTypeName(overflow)─┐
│       68000 │     2464 │ UInt64                  │ UInt16               │
└─────────────┴──────────┴─────────────────────────┴──────────────────────┘
Última modificação em 10 de junho de 2026