Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

sumWithOverflow

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

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;
┌─no_overflow─┬─overflow─┬─toTypeName(no_overflow)─┬─toTypeName(overflow)─┐
│       68000 │     2464 │ UInt64                  │ UInt16               │
└─────────────┴──────────┴─────────────────────────┴──────────────────────┘
Navigation