Search Postgresql Archives

Re: remove some rows from resultset

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 19 Apr 2012, at 6:26, Ondrej Ivanič wrote:

> I have query which does everything but I have mixed feelings about it:
> select
>    b1.org_id, b1.contract_name, coalesce(b2.count, b1.count)  as count
> from (select * from billing where org_specific_rule = false) as b1
> left join billing b2 on
>    b1.org_id = b2.org_id
>    and b1.contract_name = b2.contract_name
>    and b2.org_specific_rule = true
> order by 1,2;


You don't need the subquery. Also, if you can have multiple 'false' rows for the same unique identifier, you'll want to sum them.

Untested, but I think this is what you want:

select
   b1.org_id, b1.contract_name, sum(b1.count) + sum(coalesce(b2.count, 0))  as count
from billing as b1
left join billing b2 on
   b1.org_id = b2.org_id
   and b1.contract_name = b2.contract_name
   and b2.org_specific_rule = false
   and b1.org_specific_rule = true
group by b1.org_id, b1.contract_name
order by b1.org_id, b1.contract_name;


Alban Hertroys

--
Screwing up is an excellent way to attach something to the ceiling.


-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux