Usually when NULL
is involved in any equation then the whole result resolves into NULL
(e.g. SELECT 2 + NULL + 5
returns NULL
Well it's explained in the manual
SUM([DISTINCT] expr)
Returns the sum of expr. If the return set has no rows, SUM() returns NULL. The DISTINCT keyword can be used to sum only the distinct values of expr.SUM() returns NULL if there were no matching rows.
What's more it's also said that:
This section describes group (aggregate) functions that operate on sets of values. Unless otherwise stated, group functions ignore NULL values.
in other words SUM behaves like this because that's the way it's defined to be.