Saltar al contenido principal

sumWithOverflow

Introducido en: v1.1.0 Calcula la suma de valores numéricos y usa el mismo tipo de dato para el resultado que para los parámetros de entrada. Si la suma supera el valor máximo de este tipo de dato, se calcula con desbordamiento. Sintaxis
sumWithOverflow(num)
Argumentos Valor devuelto La suma de los valores. (U)Int* o Float* o Decimal* Ejemplos Demostración del comportamiento ante desbordamiento con UInt16
Query
CREATE TABLE employees
(
    id UInt32,
    name String,
    monthly_salary UInt16 -- seleccionado para que la suma de valores produzca un desbordamiento
)
ENGINE = Memory;

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

-- Consulta del importe total de los salarios de los empleados usando las funciones sum y sumWithOverflow, y muestra sus tipos con la función toTypeName
-- Para la función sum, el tipo resultante es UInt64, suficientemente grande para contener la suma, mientras que para sumWithOverflow el tipo resultante permanece como 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 modificación el 10 de junio de 2026