Re: wip: functions median and percentile - Mailing list pgsql-hackers

From Pavel Stehule
Subject Re: wip: functions median and percentile
Date
Msg-id AANLkTi=UH-KAkEqMPCe4oRnuptEYyp7uVSnjzw+nFUNA@mail.gmail.com
Whole thread Raw
In response to Re: wip: functions median and percentile  (Hitoshi Harada <umi.tanuki@gmail.com>)
List pgsql-hackers
Hello

I am looking on SQL standard for some info about "within group"
clause. This clause is necessary for functions:

rank, dense_rank, cume_dist, percent_rank and percentile_disc and
persentile_cont. These functions needs a clause "WITHIN GROUP".

If I understand, then these functions are not simple aggregates - its
some between window functions and aggregates.

Questions:

* is clause "WITHIN GROUP" just syntactic sugar for our aggregate with
ORDER BY? I am thinking so not. There are predefined set of functions
that can be used with this clause.

* what is correct implementation of these functions?  When I am
looking on parameters, these functions are very similar to window
functions. So there are two two ways for implementation. Implement it
as special case of window functions or implement it as special case of
aggregates.

Regards

Pavel Stehule

2010/10/12 Hitoshi Harada <umi.tanuki@gmail.com>:
> 2010/10/12 Pavel Stehule <pavel.stehule@gmail.com>:
>> Hello
>>
>> 2010/10/11 Greg Stark <gsstark@mit.edu>:
>>> On Sun, Oct 10, 2010 at 2:16 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>>>> It was pointed out upthread that while median isn't presently
>>>> in the standard, Oracle defines it in terms of percentile_cont(0.5)
>>>> which *is* in the standard.
>>>
>>> Uhmm, then why don't we implement that? We could provide median() as a
>>> short-cut but percentile_cont() doesn't sound much harder to implement
>>> than median() and more general.
>>
>> The problem is in interface. The original patch did it, but I removed
>> it. We cannot to unsure immutability of some parameters now. Can we
>> enhance a AGGREGATE to allow some mark like IMMUTABLE parameter and
>> probably we should to support ANSI syntax:
>>
>> PERCENTILE_CONT ( expression1 )
>> WITHIN GROUP ( ORDER BY expression2 [ ASC | DESC ] )
>>
>> This syntax allows to divide a muttable and immutable parameters.
>
> If this is only a syntax sugar for mutable/immutable parameter, then I
> guess it's time to take it serious to implement in our syntax,
> although I'm not sure if it affects more execution model than
> interface.
>
> Regards,
>
>
>
> --
> Hitoshi Harada
>


pgsql-hackers by date:

Previous
From: Fujii Masao
Date:
Subject: Re: Issues with Quorum Commit
Next
From: Peter Eisentraut
Date:
Subject: Re: wip: functions median and percentile