Andrew Gierth <and...@tao11.riddles.org.uk> writes: > There's also the question of ungrouped vars, maybe. Consider these two > queries:
> select array(select a+sum(x) from (values (0.3),(0.7)) v(a) group by a) > from generate_series(1,5) g(x); > select array(select percentile_disc(a) within group (order by x) > from (values (0.3),(0.7)) v(a) group by a) > from generate_series(1,5) g(x); > In both cases the aggregation query is the outer one; but while the first > can return a value, I think the second one has to fail (at least I can't > see any reasonable way of executing it). Hm, interesting. So having decided that the agg has level 1, we need to reject any level-0 vars in the direct parameters, grouped or not. We could alternatively decide that the agg has level 0, but that doesn't seem terribly useful, and I think it's not per spec either. SQL:2008 section 6.9 <set function specification> seems pretty clear that only aggregated arguments should be considered when determining the semantic level of an aggregate. OTOH, I don't see any text there restricting what can be in the non-aggregated arguments, so maybe the committee thinks this case is sensible? Or they just missed it. regards, tom lane -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers