Usually when NULL
is involved in any equation then the whole result resolves into NULL
(e.g. SELECT 2 + NULL + 5
returns NULL
)
Same holds for the following case:
SELECT SUM(NULL)
returns NULL
. Proposition #1
What happens when SUM
is used to aggregate a column and the column can contain NULL
values too ?
Based on the proposition #1
why the output doesn't result in NULL
.
CREATE TABLE t (age INT NULL);
INSERT INTO t (age) VALUES (15),(20), (NULL), (30), (35);
SELECT
SUM(age)
FROM t;
Output: 100
But I was expecting NULL
.
Does MySQL silently skips those NULL values in this case?
Well it's explained in the manual
What's more it's also said that:
in other words SUM behaves like this because that's the way it's defined to be.
You are right, aggregate functions handles null values in a different way than non aggregate functions:
returns NULL because NULL on this context it means an unknown value, so the result will be NULL (unknown) as well.
This will return 7 instead:
because on this context a NULL value, even if it is unknown, can be seen as a "not specified value". The reason is that it's very common to use NULL as a not specified value and it's little pratical use to include NULLs in an aggregate function, that's why aggregate functions are defined to ignore NULLs.