Additional select fields in a GROUP BY

От: Vitaly Belman
Тема: Additional select fields in a GROUP BY
Дата: ,
Msg-id: 2393942843.20040613062117@012.net.il
(см: обсуждение, исходный текст)
Ответы: Re: Additional select fields in a GROUP BY  (Tom Lane)
Re: Additional select fields in a GROUP BY  (Bruno Wolff III)
Список: pgsql-performance

Скрыть дерево обсуждения

Additional select fields in a GROUP BY  (Vitaly Belman, )
 Re: Additional select fields in a GROUP BY  (Tom Lane, )
 Re: Additional select fields in a GROUP BY  (Bruno Wolff III, )
  Re: Additional select fields in a GROUP BY  (Vitaly Belman, )
   Re: Additional select fields in a GROUP BY  (Tom Lane, )

Hello,

Consider the following query:

select t1field1, avg(t2fieild2)
from t1, t2
where t1.field1 = t2.field2
group by t1field1

That works fine. But I'd really like to see more fields of t1 in this
query, however I can't add them into the select because they're not
part of the GROUP BY, thus I have to add them to there too:

select t1field1, t1field2, t1field3, avg(t2fieild2)
from t1, t2
where t1.field1 = t2.field2
group by t1field1, t1field2, t1field3

The problem is that addind them all to GROUP BY causes a performance
loss.. The only solution I found is using a subquery like this:

select * from
t1, (select t1field1, avg(t2fieild2)
from t1, t2
where t1.field1 = t2.field2
group by t1field1) t1inner
where t1.field1 = t1inner.field1

It works just fine.. But I prefer not to use subqueries unless I am
really forced to due to the design of my application.

Another solution I considered is using aggreate function like that:

select t1field1, max(t1field2), max(t1field3), avg(t2fieild2)
from t1, t2
where t1.field1 = t2.field2
group by t1field1

Sadly, this caused the same performance... I wonder though, is it
possible to make an aggregate function like first(), last() in Oracle
(IIRC)? I believe that in such cases MySQL does first() by itself.

Other ideas are welcome too.


Regards,
 Vitaly Belman

 ICQ: 1912453
 AIM: VitalyB1984
 MSN: 
 Yahoo!: VitalyBe



В списке pgsql-performance по дате сообщения:

От: Tom Lane
Дата:
Сообщение: Re: Additional select fields in a GROUP BY
От: Bruno Wolff III
Дата:
Сообщение: Re: Additional select fields in a GROUP BY