Re: Possible to do this in one query?

From: Ian Barwick <barwick(at)gmx(dot)net>
To: "John Oakes" <john(at)networkproductions(dot)net>, <pgsql-sql(at)postgresql(dot)org>
Subject: Re: Possible to do this in one query?
Date: 2002-03-27 02:10:50
Message-ID: 200203270309.EAA29988@post.webmailer.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

On Tuesday 26 March 2002 19:22, John Oakes wrote:
> I have a table with a column that contains fail codes. These codes are
> 1-9. I need to get a count of each of the codes. Right now I have separate
> queries:
>
> select count(*) from tablename
> where failcode = '1';
>
> If I use GROUP BY it obviously doesn't get the count for codes that don't
> exist. I need to have 0 returned though so I have a listing of all 9 fail
> codes and their total, even if it is zero. I tried UNION like this:
>
> select count(*) from tablename
> where failcode = '1';
> UNION
> select count(*) from tablename
> where failcode = '2';
>
> etc, but it too excludes the codes that have a count of zero. Right now I
> have resorted to using 9 separate queries. Is there a way to do this with
> one? Thank you!

If you have a seperate table containing all possible fail codes you can do
something like this:

select fc.failcode, count(tn.failcode)
from failcode_table fc
left join tablename tn
on tn.failcode=fc.failcode
group by fc.failcode

Ian Barwick

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Kancha . 2002-03-27 02:30:39 resetting sequence
Previous Message Shane Wright 2002-03-26 23:55:50 Re: quickest query to check a table for existance of a value in a field