Passer au contenu principal

sumWithOverflow

Introduit dans : v1.1.0 Calcule la somme de valeurs numériques, en utilisant pour le résultat le même type de données que pour les paramètres d’entrée. Si la somme dépasse la valeur maximale de ce type de données, elle est calculée avec débordement. Syntaxe
sumWithOverflow(num)
Arguments Valeur renvoyée La somme des valeurs. (U)Int* ou Float* ou Decimal* Exemples Illustration du comportement en cas de dépassement de capacité avec UInt16
Query
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);

-- Query for the total amount of the employee salaries using the sum and sumWithOverflow functions and show their types using the toTypeName function
-- For the sum function the resulting type is UInt64, big enough to contain the sum, whilst for sumWithOverflow the resulting type remains as 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               │
└─────────────┴──────────┴─────────────────────────┴──────────────────────┘
Dernière modification le 29 juin 2026