From: | "Tim Barnard" <tbarnard(at)povn(dot)com> |
---|---|
To: | "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: Re: [SQL] Difficult SQL Statement |
Date: | 2001-05-29 16:44:35 |
Message-ID: | 002f01c0e85e$a56b0cc0$a519af3f@hartcomm.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general pgsql-sql |
Thanks for the helpful tip!
Tim
----- Original Message -----
From: "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "Tim Barnard" <tbarnard(at)povn(dot)com>
Cc: "Jim" <jim_esti(at)hotmail(dot)com>; <pgsql-general(at)postgresql(dot)org>
Sent: Tuesday, May 29, 2001 7:50 AM
Subject: Re: [GENERAL] Re: [SQL] Difficult SQL Statement
> I wrote:
> > select ASMT_CODE, PASSED, TOTAL, PASSED::float4/TOTAL::float4
> > from
> > (select ASMT_CODE, count(*) as TOTAL from RESULTS
> > group by ASMT_CODE) as tmp1
> > natural join
> > (select ASMT_CODE, count(*) as PASSED from RESULTS
> > where STATUS='PASSED' group by ASMT_CODE) as tmp2
>
> BTW, although this is a fine example of how to avoid using temp tables,
> it's not such a great solution to the original problem. What happens
> if there are no 'PASSED' entries at all for a given ASMT_CODE? You
> probably won't want that ASMT_CODE to disappear from your report ---
> but it will disappear in the join. We could fix this with a left join
> and some hackery to deal with the resulting NULL values for PASSED,
> but now things are getting ugly. Time to try something different:
>
> select ASMT_CODE, PASSED, TOTAL, PASSED::float4/TOTAL::float4 as PCT
> from
> (select ASMT_CODE,
> count(*) as TOTAL,
> sum(CASE WHEN STATUS='PASSED' THEN 1 ELSE 0 END) as PASSED
> from RESULTS group by ASMT_CODE) as tmp1
>
> Here we use the sub-select only as a way of labeling the count() and
> sum() results so that we don't have to write and compute them twice.
> You could write it as a simple one-level SELECT if you didn't mind
> that redundancy.
>
> regards, tom lane
>
From | Date | Subject | |
---|---|---|---|
Next Message | Tim Barnard | 2001-05-29 16:55:24 | Re: Get status of connection (C) |
Previous Message | Rene Pijlman | 2001-05-29 16:38:29 | Re: UPDATE keyword |
From | Date | Subject | |
---|---|---|---|
Next Message | Manessinger Andreas | 2001-05-29 16:53:13 | AW: Case Insensitive Queries |
Previous Message | ANDREW PERRIN | 2001-05-29 16:35:53 | Re: Case Insensitive Queries |