Re: [HACKERS] 6.4 Aggregate Bug and HAVING problems...
От | Vadim Mikheev |
---|---|
Тема | Re: [HACKERS] 6.4 Aggregate Bug and HAVING problems... |
Дата | |
Msg-id | 35F4EAD6.D867CD84@krs.ru обсуждение исходный текст |
Ответ на | Re: [HACKERS] 6.4 Aggregate Bug and HAVING problems... (Andreas Zeugswetter <andreas.zeugswetter@telecom.at>) |
Список | pgsql-hackers |
Andreas Zeugswetter wrote: > > >Also, could someone test is HAVING without aggregates > >disallowed or not: > > > >select a, min (b) from x group by a having a = 0; > > allowed in Informix: > a (min) > No rows found. Thanks, Andreas! I'll comment out some code... Actually, non-aggregate expressions could be moved to WHERE, but at the moment I'll just allow them in HAVING. Ok, there are also some problems with subselects in HAVING but I haven't time to fix them now: select a as a2, b as b2, c as c2 into table x2 from x; select a, sum(b) from x group by a having avg(c) = (select max(c2) from x2 where a2 = a/2); -- ok select a/2, sum(b) from x group by a/2 having avg(c) = (select max(c2) from x2 where a2 = a/2); -- ERROR: You must group by the attribute used from outside! -- this means that GroupBy func doesn't work here... select a, sum(b) from x group by a having avg(c) = (select max(c2) from x2 where a2 = max(b)); -- ERROR: parser: aggregates not allowed in WHERE clause -- Is this allowed in another dbms-es ??? -- This is not problem of HAVING but subselects... select a as f, sum(b) from x group by f having avg(c) = (select max(c2) from x2 where a2 = f); -- ERROR: attribute 'f' not found -- Should be aliasing handled in subselects ??? Vadim
В списке pgsql-hackers по дате отправления: