Received: from localhost (postgresql.org [64.49.215.8]) by postgresql.org (Postfix) with ESMTP id 1EFCC475B8F for ; Wed, 23 Oct 2002 06:01:05 -0400 (EDT) Received: from serwer.skawsoft.com.pl (serwer.skawsoft.com.pl [213.25.37.66]) by postgresql.org (Postfix) with ESMTP id 9E90947610A for ; Wed, 23 Oct 2002 06:01:02 -0400 (EDT) Received: from klaster.net (pr150.krakow.cvx.ppp.tpnet.pl [213.76.42.150]) by serwer.skawsoft.com.pl (Postfix) with ESMTP id C14B62B2B9 for ; Wed, 23 Oct 2002 11:54:31 +0200 (CEST) Message-ID: <3DB674CD.50404@klaster.net> Date: Wed, 23 Oct 2002 12:07:09 +0200 From: Tomasz Myrta User-Agent: Mozilla/5.0 (Windows; U; Win 9x 4.90; PL; rv:1.1) Gecko/20020826 X-Accept-Language: pl, en-us, en MIME-Version: 1.0 To: pgsql-sql@postgresql.org Subject: sub-select with aggregate Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: by AMaViS new-20020517 X-Archive-Number: 200210/285 X-Sequence-Number: 10002 Hi I want to perform query looking like this: select user_id, a/sum_a as percent_a, b/sum_b as percent_b from users join (select group_id, sum(a) as sum_a, sum(b) as sum_b from users group by group_id) X using (group_id) where group_id=3; This query works, but very slow. Subquery with aggregate is performed for all table rows instead of group_id=3. I wish I could write it like this, but it doesn't work at all: select user_id, a/sum_a as percent_a, b/sum_b as percent_b from users U, (select sum(a) as sum_a, sum(b) as sum_b from users where group_id=U.group_id) X where group_id=3; I don't want to make it as single query with "group by", because it has a lot of fields and "group by" would be very long. Regards, Tomasz Myrta