Re: Simple aggregate query brain fart

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Mark Fenbers <Mark(dot)Fenbers(at)noaa(dot)gov>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: Simple aggregate query brain fart
Date: 2010-03-18 15:11:13
Message-ID: 11074.1268925073@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Mark Fenbers <Mark(dot)Fenbers(at)noaa(dot)gov> writes:
> I want to do:
> SELECT id, count(*) FROM mytable WHERE count(*) > 2 GROUP BY id;

> But this doesn't work because Pg won't allow aggregate functions in a
> where clause.

Use HAVING, not WHERE. The way you are trying to write the query is
meaningless because WHERE filters rows before grouping/aggregation.
HAVING filters afterwards, which is when it makes sense to put a
condition on count(*).

regards, tom lane

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Mark Fenbers 2010-03-18 15:15:55 Re: Simple aggregate query brain fart
Previous Message Plugge, Joe R. 2010-03-18 15:10:38 Re: Simple aggregate query brain fart