Re: introduction of WIP window function patch
От | Martijn van Oosterhout |
---|---|
Тема | Re: introduction of WIP window function patch |
Дата | |
Msg-id | 20080705142024.GA29268@svana.org обсуждение исходный текст |
Ответ на | introduction of WIP window function patch (H.Harada <umi.tanuki@gmail.com>) |
Ответы |
Re: introduction of WIP window function patch
Re: introduction of WIP window function patch |
Список | pgsql-hackers |
On Sat, Jul 05, 2008 at 07:04:29PM +0900, H.Harada wrote: > Hi, > > As I proposed a month before, I am working on window function. Very nice! > http://umitanuki.net/pgsql/wfv01/design.html > > The problem is, as written in the "Things to discussed" section of the > document, how you define window functions (e.g. RANK()). My idea is to > treat them as specialized functions such as SET OF functions and mark > it in pg_proc. But this doesn't resolve RANK() boundary problem. Actually, I would make RANK() and ROW_NUMBER() act more like aggregates. ISTM you have two kinds of window functions: - aggregation: a result is calculated over a set and the result copied across all the rows. - order depenadant: same as above, but the result is different for each row. I think you could make the latter work using the current aggregation setup, just by calling the final_func for each row rather than just once at the end. That would make RANK() a normal aggrgate which returns the number of distinct values seen so far (assuming input is ordered) and ROW_NUMBER() is just an alias for COUNT(). I hope this is clear, let me know if it doesn't make sense. Have a nice day, -- Martijn van Oosterhout <kleptog@svana.org> http://svana.org/kleptog/ > Please line up in a tree and maintain the heap invariant while > boarding. Thank you for flying nlogn airlines.
В списке pgsql-hackers по дате отправления: