Re: WITHIN GROUP patch
От | Tom Lane |
---|---|
Тема | Re: WITHIN GROUP patch |
Дата | |
Msg-id | 14195.1386525856@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: WITHIN GROUP patch (Andrew Gierth <andrew@tao11.riddles.org.uk>) |
Ответы |
Re: WITHIN GROUP patch
|
Список | pgsql-hackers |
Andrew Gierth <andrew@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
В списке pgsql-hackers по дате отправления: