Thread: differnt behaviour of NULL in an aggregate and with an operator

differnt behaviour of NULL in an aggregate and with an operator

From
"Willy-Bas Loos"
Date:
Hi,

Why is it that
  SELECT 1+null
evaluates to NULL, but
  SELECT sum(foo) FROM (VALUES(1), (NULL)) AS v(foo)
evaluates to 1 ?

WBL

Re: differnt behaviour of NULL in an aggregate and with an operator

From
Craig Ringer
Date:
Willy-Bas Loos wrote:
> Hi,
>
> Why is it that
>   SELECT 1+null
> evaluates to NULL, but
>   SELECT sum(foo) FROM (VALUES(1), (NULL)) AS v(foo)
> evaluates to 1 ?

SUM(x) ignores null input, like COUNT(x) etc. It's the sum of all
non-null instances of x.

There's some useful explanation of the various NULL handling of
aggregates here:

http://www.postgresql.org/docs/8.3/static/sql-createaggregate.html

though I'm not sure how well it applies to the built-in aggregates.

--
Craig Ringer