У меня есть таблица, которая содержит список движений:
+----+----------+------------+------------+
| id | boat_id | date | state |
+----+----------+------------+------------+
| 1 | 2 | 2020-01-03 | 1 |
| 2 | 2 | 2020-01-23 | 3 |
| 3 | 2 | 2020-03-02 | 1 |
| 4 | 2 | 2020-03-29 | 2 |
+----+----------+------------+------------+
Мне нужен запрос SQL, чтобы узнать количество дней, в течение которых лодка находится в каждом штате, с указанным диапазоном дат.
Например, с диапазоном 2020-03-01 - 2020-03-31: последним изменением движения было: состояние 3 дата «2020-01-23». Таким образом, состояние 2020-03-01 равно 3 до 2020-03-02, то есть изменяется на 1. Тогда состояние остается равным 1 до 2020-03-29, которое изменяется на 2.
В результате будет: Состояние 3 дня: 1 (с 2020-03-01 до 2020-03-02) Состояние 1 день: 27 (с 2020-03-02 до 2020-03-29) Состояние 2 дня: 3 (с 2020-03-29 до 2020-03-31)