Re: Combining Aggregates

Поиск
Список
Период
Сортировка
От Peter Eisentraut
Тема Re: Combining Aggregates
Дата
Msg-id 54E797BC.9030702@gmx.net
обсуждение исходный текст
Ответ на Re: Combining Aggregates  (Tomas Vondra <tomas.vondra@2ndquadrant.com>)
Ответы Re: Combining Aggregates
Список pgsql-hackers
On 2/20/15 3:09 PM, Tomas Vondra wrote:
> On 20.2.2015 21:01, Peter Eisentraut wrote:
>> Is there a case where the combining function is different from the
>> transition function, other than for count?
> 
> It's different in all the cases when the aggregate state is not
> identical to a single value - for example the usual avg(), sum() and
> stddev() aggregates keep state which is equal to
> 
>    {count(X), sum(X), sum(X*X)}
> 
> The 'combine' function gets two such 'state' values, while transition
> gets 'state' + next value.

That's just because the count is hidden there in an opaque custom
transition function.  If, say, we had instead an array of transition
functions {inc, plus, plussq} and we knew that plus and plussq are
associative operators, all we'd need to special case is the count case.This would avoid a lot of repetitive code for
stddev,avg, etc.
 

(As a bonus, you could use this knowledge to compute count, sum, avg,
and stddev in parallel using only three counters.)




В списке pgsql-hackers по дате отправления:

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: Re: Precedence of standard comparison operators
Следующее
От: Tomas Vondra
Дата:
Сообщение: Re: Combining Aggregates