Re: How to enumerate partitions from a window function? - Mailing list pgsql-general

From Tom Lane
Subject Re: How to enumerate partitions from a window function?
Date
Msg-id 583850.1599141682@sss.pgh.pa.us
Whole thread Raw
In response to How to enumerate partitions from a window function?  (Alban Hertroys <haramrae@gmail.com>)
Responses Re: How to enumerate partitions from a window function?  (Alban Hertroys <haramrae@gmail.com>)
List pgsql-general
Alban Hertroys <haramrae@gmail.com> writes:
> As stated above, I want to enumerate the runs, starting at 1 and
> incrementing by 1 every time a partition from the 'run' window closes,
> Is there a way to achieve this through window functions, or do we need to
> wrap the thing in a subquery to achieve this?

I think this'll work:

select datetime, property_A, property_B
, first_value(datetime)::time over run as swap_time
, dense_rank() over (order by property_A, property_B)
, value
from process_data
window run as (partition by property_A, property_B order by datetime)
;

You can't do it with a window function over the "run" window because
no window function ever looks outside the current partition.  But
that's easy to fix by using a different window definition.  The
planner is smart enough to see that these windows are compatible
and only need one sort to be performed.

            regards, tom lane



pgsql-general by date:

Previous
From: Peter Eisentraut
Date:
Subject: Re: SSL between Primary and Seconday PostgreSQL DBs
Next
From: Jehan-Guillaume de Rorthais
Date:
Subject: Re: Tuchanka