Re: join problem - Mailing list pgsql-sql

From Ragnar
Subject Re: join problem
Date
Msg-id 1182602782.5953.237.camel@localhost.localdomain
Whole thread Raw
In response to Re: join problem  ("A. R. Van Hook" <hook@lake-lotawana.mo.us>)
Responses Re: join problem  ("A. R. Van Hook" <hook@lake-lotawana.mo.us>)
List pgsql-sql
On lau, 2007-06-23 at 04:15 -0500, A. R. Van Hook wrote:
> Ragnar wrote:
> > On fim, 2007-06-21 at 08:46 -0500, A. R. Van Hook wrote:
> >> If I try an inclusive query using the following:
> >>      select
> >>       sum(i.rowtot + i.tax) as tot,
> >>       sum(v.deposit) as deposit
> >>     from cai c
> >>     join invoice           v on (v.cusid = c.cusid)
> >>     left join invoiceitems i on (v.ivid = i.ivid)
> >>     where v.cusid = 2128
> >>     group by 
> >>       c.cusid
> >> I get
> >>     tot    | deposit
> >> ----------+---------
> >>  1179.240 | 2819.24
> >
> > you are adding the invoice deposit once for each item
> >
> What is the correct query???

sum each invoice separately, and then group the sums by cusid.

for example:

select vcusid as cusid,      sum(vtot) as tot,      sum(vdeposit) as deposit
from (      select         v.cusid as vcusid,         v.ivid as vivid,         sum(i.rowtot + i.tax) as vtot,
sum(v.deposit)/count(*)as vdeposit      from invoice as v            left join invoiceitems as i  on (v.ivid = i.ivid)
   group by v.cusid,               v.ivid    ) as vsums
 
where vsums.vcusid=2128
group by vsums.vcusid


hope this helps
gnari




pgsql-sql by date:

Previous
From: Andreas Kretschmer
Date:
Subject: Re: Counting all rows
Next
From: "Stefan Arentz"
Date:
Subject: Re: Counting all rows