Re: proposal: window function - change_number

Поиск
Список
Период
Сортировка
От Pavel Stehule
Тема Re: proposal: window function - change_number
Дата
Msg-id CAFj8pRBL_GjcH+s0g5A0Rz_YVPtiw+6NaV43sq+=gabOk=-+FA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: proposal: window function - change_number  (Andrew Gierth <andrew@tao11.riddles.org.uk>)
Список pgsql-hackers


2014-09-21 17:51 GMT+02:00 Andrew Gierth <andrew@tao11.riddles.org.uk>:
>>>>> "Pavel" == Pavel Stehule <pavel.stehule@gmail.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)

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

Предыдущее
От: Rémi Cura
Дата:
Сообщение: Re: proposal: window function - change_number
Следующее
От: Pavel Stehule
Дата:
Сообщение: Re: proposal: window function - change_number