Re: Window function?

Поиск
Список
Период
Сортировка
От David G. Johnston
Тема Re: Window function?
Дата
Msg-id CAKFQuwZWdZzPT2brDH_k+dqC2DxPwgMDc0ZXzXBZ09g_WMQ-Ow@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Window function?  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general
On Sat, Jun 4, 2022 at 7:50 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
Robert Stanford <rstanford@gmail.com> writes:
> Can anyone suggest an elegant way to coalesce consecutive rows so only the
> first start time and last end time for each group of events (by input) is
> returned.

Window functions don't change the number of query result rows, so that
idea is a dead end.  The standard way to solve this is GROUP BY:

SELECT Input, MIN(Start) AS Start, MAX(End) AS End
FROM ...
GROUP BY Input
ORDER BY Input -- optional

Assuming that input group 4 really is supposed to show up twice in the output then the final solution is going to have to be a combination of this and window functions.  You need the later in order to be able to say "input 4, appearance 1" and "input 4, appearance 2" - which lead/lag tends to help with.  Then the group by becomes {input, appearance}.

David J.

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

Предыдущее
От: Jeff Janes
Дата:
Сообщение: Re: Why password authentication failed for user "postgres"?
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Call pstrdup() of palloc.h will change source string, please help!