Re: aggregate question

From: Hubert Lubaczewski <hubert(dot)lubaczewski(at)eo(dot)pl>
To: "Ryan" <pgsql-sql(at)seahat(dot)com>
Cc: <pgsql-sql(at)postgresql(dot)org>
Subject: Re: aggregate question
Date: 2003-06-24 07:33:22
Message-ID: 20030624093322.2051cbb5.hubert.lubaczewski@eo.pl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

On Mon, 23 Jun 2003 13:59:52 -0500 (CDT)
"Ryan" <pgsql-sql(at)seahat(dot)com> wrote:

> package_id | integer | not null default
> I must be a total space case today because I can't hammer out the sql to
> get a listing of all the packages with a count() of the package_log by
> package_id.

if you would just package_id and count it would be simple:
select
p.package_id,
count(*) as count
from
packages p
left outer join package_log l on p.package_id = l.package_id
;

but, if you want all fields from packages it get trickier.
you can do it in two ways:

select
p.*,
(select count(*) from package_log l where l.package_id = p.package_id)
from
packages p

or:

select
p.*,
coalesce(c.count,0)
from
packages p
left outer join (select l.package_id, count(*) as count from package_log l) c on p.package_id = c.package_id

should work - but i just wrote it "by hand", and didn't test it. anyway - it should give either working code or idea on how to achieve it.

depesz

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Tomasz Myrta 2003-06-24 08:01:20 Re: aggregate question
Previous Message Nicolas JOUANIN 2003-06-24 06:49:21 Re: TR: Like and =