Re: count(*) vs count(id)

From: Guillaume Lelarge <guillaume(at)lelarge(dot)info>
To: Matt Zagrabelny <mzagrabe(at)d(dot)umn(dot)edu>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Rob Sargent <robjsargent(at)gmail(dot)com>, "pgsql-generallists(dot)postgresql(dot)org" <pgsql-general(at)lists(dot)postgresql(dot)org>
Subject: Re: count(*) vs count(id)
Date: 2021-02-02 01:19:31
Message-ID: CAECtzeVpR8yvP+S3J++MEJ7dsmsiEX2kxToBmHdJrrXz+zxzpQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Le mar. 2 févr. 2021 à 02:14, Matt Zagrabelny <mzagrabe(at)d(dot)umn(dot)edu> a écrit :

>
>
> On Mon, Feb 1, 2021 at 6:35 PM Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>
>> Matt Zagrabelny <mzagrabe(at)d(dot)umn(dot)edu> writes:
>> > On Mon, Feb 1, 2021 at 5:57 PM Rob Sargent <robjsargent(at)gmail(dot)com>
>> wrote:
>> >> You got one null from count(*) likely.
>>
>> > What is count(*) counting then? I thought it was rows.
>>
>> Yeah, but count(id) only counts rows where id isn't null.
>>
>
> I guess I'm still not understanding it...
>
> I don't have any rows where id is null:
>
> $ select count(*) from call_records where id is null;
> count
> ═══════
> 0
> (1 row)
>
> Time: 0.834 ms
> $
>
> select count(id) from call_records where id is null;
> count
> ═══════
> 0
> (1 row)
>
> Time: 0.673 ms
>
> Which field is count(*) counting if it is counting nulls?
>

You're doing a left join, so I guess there's no row where
call_records.timestamp::date = 2020-08-30. That would result with a NULL id.

Guillaume

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Michael Paquier 2021-02-02 01:36:57 Re: ransomware
Previous Message aNullValue (Drew Stemen) 2021-02-02 01:17:50 Re: count(*) vs count(id)