sum
Calculates the sum of numeric values. NULL values do not contribute to the sum.
Syntax
text
sum(num)Arguments
num— A numeric column or expression. Integers, floating-point numbers, and decimals are supported. Legacy text and blob values use SQL numeric conversion. Native dates, times, intervals, addresses, and collections require an explicit numeric conversion.
Returned value
Returns the sum of the non-NULL values, or NULL for empty or all-NULL input.
- Ordinary integers produce an
INTEGERresult. Exact overflow raisesNUMERIC_OVERFLOW. - Floating-point inputs produce a
REALresult. - Native unsigned and wide integers retain an exact numeric result within their supported range.
- Decimals produce an exact decimal total. Mixing decimals with approximate
inputs raises
TYPE_MISMATCH; cast the inputs to one numeric family first.
Use coalesce(sum(num), 0) when an empty result should be zero. total(num)
always produces a floating-point total and returns 0.0 for empty input.
Examples
Computing sum of employee salaries
sql
CREATE TABLE employees
(
id UInt32,
name String,
salary UInt32
);
INSERT INTO employees VALUES
(87432, 'John Smith', 45680),
(59018, 'Jane Smith', 72350),
(20376, 'Ivan Ivanovich', 58900),
(71245, 'Anastasia Ivanovna', 89210);sql
SELECT sum(salary) FROM employees FORMAT csv;text
266140Total time spent on requests
Store the duration as a numeric number of milliseconds:
sql
CREATE TABLE requests (req_id UInt32, duration_ms UInt32);
INSERT INTO requests VALUES (1, 100), (2, 200), (3, 300);sql
SELECT sum(duration_ms) AS total_duration_ms FROM requests FORMAT csv;text
600Missing values and empty input
sql
INSERT INTO requests VALUES (4, NULL);sql
SELECT sum(duration_ms) FROM requests FORMAT csv;text
600sql
SELECT sum(duration_ms), coalesce(sum(duration_ms), 0)
FROM requests
WHERE req_id > 100
FORMAT csv;text
\N,0