Why is the sum() of zero numbers not zero?
This is a requirement from the SQL standard. I'm most familiar with the 1992 standard. Quoting from it, with emphasis mine:


  General Rules
  
  1) Case:
  
  a) If COUNT(*) is specified, then the result is the cardinality
       of T.
  
  6.5 
  
  b) Otherwise, let TX be the single-column table that is the
       result of applying the  to each row of T
       and eliminating null values. If one or more null values are
       eliminated, then a completion condition is raised: warning-
       null value eliminated in set function.
  
  2) If DISTINCT is specified, then let TXA be the result of elimi-
  nating redundant duplicate values from TX. Otherwise, let TXA be
  TX.
  
  Case:
  
  a) If the  COUNT is specified, then the
       result is the cardinality of TXA.
  
  b) If AVG, MAX, MIN, or SUM is specified, then
  
  Case:
  
  i) If TXA is empty, then the result is the null value.


In short, NULLs are always excluded from the result of SUM, MAX, MIN, and AVG. I can't tell you exactly why this is, other than I think it's useful to be able to distinguish between a sum of a single value of 0 and a sum of an empty set.