From: | Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com> |
---|---|
To: | Andrew Gierth <andrew(at)tao11(dot)riddles(dot)org(dot)uk> |
Cc: | PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: proposal: window function - change_number |
Date: | 2014-09-21 17:06:02 |
Message-ID: | CAFj8pRBL_GjcH+s0g5A0Rz_YVPtiw+6NaV43sq+=gabOk=-+FA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
2014-09-21 17:51 GMT+02:00 Andrew Gierth <andrew(at)tao11(dot)riddles(dot)org(dot)uk>:
> >>>>> "Pavel" == Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com> writes:
>
> Pavel> Hi
> Pavel> I tried to solve following task:
>
> Pavel> I have a table
>
> Pavel> start, reason, km
> Pavel> =============
> Pavel> 2014-01-01 08:00:00, private, 10
> Pavel> 2014-01-01 09:00:00, commerc, 20
> Pavel> 2014-01-01 10:00:00, commerc, 20
> Pavel> 2014-01-01 11:00:00, private, 8
>
> Pavel> and I would reduce these rows to
>
> Pavel> 2014-01-01 08:00:00, private, 10
> Pavel> 2014-01-01 09:00:00, commerc, 20 + 20 = 40
> Pavel> 2014-01-01 11:00:00, private, 8
>
> Pavel> It is relative hard to it now with SQL only.
>
> Only relatively. My standard solution is something like this:
>
> select start_time, reason, sum(km) as km
> from (select max(label_time) over (order by start) as start_time,
> reason, km
> from (select start, reason, km,
> case when reason
> is distinct from
> lag(reason) over (order by start)
> then start
> end as label_time
> from yourtable
> ) s2
> ) s1
> group by start_time, reason
> order by start_time;
>
> (Your change_number idea is essentially equivalent to doing
> sum(case when x is distinct from lag(x) over w then 1 end) over w,
> except that since window functions can't be nested, that expression
> requires a subquery.)
>
>
yes, I found this solution in third iteration too.
so this proposal lost a main benefit
Regards
Pavel
> --
> Andrew (irc:RhodiumToad)
>
From | Date | Subject | |
---|---|---|---|
Next Message | Andres Freund | 2014-09-21 17:06:22 | Re: pgsql: Row-Level Security Policies (RLS) |
Previous Message | Alvaro Herrera | 2014-09-21 16:41:55 | Re: pgsql: Row-Level Security Policies (RLS) |