jwieck@debis.com (Jan Wieck) writes:
> I wonder what makes the difference between WHERE and HAVING
> that causes HAVING to accept aggregates while WHERE doesn't.
Huh? It seems inherent in the definition to me: WHERE is a filter
applied to individual tuples before any aggregation stage can happen,
thus it makes no sense for it to include aggregate functions
(except in explicit subselects, which create a new context for the
aggregation to occur in). HAVING applies to groups of tuples after
aggregation, so aggregate functions can meaningfully be applied to
those groups.
> It would be extremely nice if it's possible to teach WHERE
> how to handle aggregates properly. Having to push them into
> subselects during rewrite if a views aggregate column appears
> in the WHERE clause is a total mess.
Explain to me what you think it should mean. It sounds to me like
you are trying to have the rewrite system change an incorrect query
into a valid one. Doesn't strike me as a good idea; does the user
know what he's going to get?
regards, tom lane