James David Smith, 25.10.2013 12:08:
> james_traffic=# SELECT count(*) FROM stage;
> count
> --------
> 430991
> (1 row)
>
> james_traffic=# SELECT bad_flag, count(bad_flag) FROM stage GROUP BY bad_flag;
> bad_flag | count
> ----------+-------
> | 0
> 1 | 4102
> (2 rows)
>
> james_traffic=# SELECT count(bad_flag) FROM stage;
> count
> -------
> 4102
> (1 row)
>
> I'm confused as to why the second query doesn't return this:
>
> bad_flag | count
> --------------+-------
> | 426889
> 1 | 4102
>
> It should count the records surely, even if the field is blank/null ?
>
This is because count(bad_flag) is equivalent to count(*) where bad_flag is not null