Konstantin Knizhnik <knizh...@garret.ru> writes:
> postgres=# create table t(x integer unique);
> CREATE TABLE
> postgres=# insert into t values (null),(null);
> INSERT 0 2
> postgres=# select count(distinct x) from t;
>   count
> -------
>       0
> (1 row)

> postgres=# select array_agg(distinct x) from t;
>   array_agg
> -----------
>   {NULL}
> (1 row)

> postgres=# select array_agg(x) from t;
>    array_agg
> -------------
>   {NULL,NULL}
> (1 row)

I see nothing contradictory here.  "array_agg(distinct x)"
combines the two NULLs into one, which is the normal
behavior of DISTINCT.  "count(distinct x)" does the same
thing --- but count() only counts non-null inputs, so
you end with zero.

                        regards, tom lane


Reply via email to