SQL запрос с группировкой по сериям одинаковых значений

Помогите, пожалуйста, составить sql запрос (сервер postgresql), если такое вообще возможно.

Упрощенно: Есть таблица со столбцами: datetime - дата, condition - булево

Нужно получить даты начала и окончания серии, когда условие было истинным. Сортировка по дате.
fromDate - дата, когда condition первый раз стало true
toDate - дата, когда condition последний раз было true

Пример:
Исходная таблица:

| datetime   | condition |  
| ---------- | --------- |  
| 01.01.2024 | false     |  
| 02.01.2024 | true      |  
| 15.01.2024 | true      |  
| 30.01.2024 | true      |  
| 05.02.2024 | false     |
| 15.02.2024 | false     |
| 17.02.2024 | true      |
| 19.02.2024 | false     |
| 01.03.2024 | true      |
| 02.03.2024 | true      |
| 03.03.2024 | false     |

Запрос должен выдать:

|fromDate   | toDate    |
| --------- | --------- |
| 02.01.2024| 30.01.2024|
| 17.02.2024| 17.02.2024|
| 01.03.2024| 02.03.2024|

Ответы (1 шт):

Автор решения: mitkin
select min(datetime) as fromDate, max(datetime) as toDate from (  
    select datetime, condition, sum((not condition) :: INT) over (order by datetime) as grp from tbl) grps  
where condition group by grp

tbl - исходная таблица

→ Ссылка