Я новичок в SQL, и я не понимаю, как сделать один запрос. У меня есть таблица, которая состоит из трех столбцов: user_id, timestamp, event_code. И это выглядит так:
user_id timestamp event_code
------------------------------------------------
0 0001e90f 2019-09-06T17:53:46.937Z 2000
1 0001e90f 2019-09-06T17:54:17.519Z 2000
2 0001e90f 2019-09-06T17:54:56.302Z 2000
3 0001e90f 2019-09-06T17:54:56.387Z 3010
4 0001e90f 2019-09-06T17:55:03.253Z 3110
5 0001e90f 2019-09-06T17:55:06.279Z 4070
6 0001e90f 2019-09-06T17:55:06.913Z 4070
7 0001e90f 2019-09-06T17:55:07.546Z 4070
8 0001e90f 2019-09-06T17:55:07.979Z 4070
9 0001e90f 2019-09-06T17:55:08.566Z 4070
Мне нужно посчитать количество сеансов в течение дня. Сеанс представляет собой последовательность из трех событий (2020 -> 3020 -> 4020). Между этими тремя событиями могут быть разные события, но разница времени между 4020 и 2020 не может превышать 1 час.
В результате я ожидаю, что такая таблица
user_id start_session end_session
----------------------------------------------------
0 0001e90f 2019-09-06T17:53:46 2019-09-06T18:50:46
1 0002e90f 2019-09-06T17:59:46 2019-09-06T18:37:46
2 0003e90f 2019-09-06T16:23:46 2019-09-06T17:00:00
3 0004e90f 2019-09-06T17:09:46 2019-09-06T17:58:27
4 0001e90f 2019-09-07T12:33:46 2019-09-07T12:55:20
5 0002e90f 2019-09-07T17:53:46 2019-09-06T18:50:46
Как я понимаю, мне нужно выбрать метку времени события 2020 года и метку времени 4020 единицы и подсчитать дельту для каждого пользователя. Затем мне нужно сгруппировать их по часам и посчитать количество таких users_id (их дельты). Но я не понимаю, как написать такое условие, и как я могу указать, что между ними должно быть событие 3020.
Буду благодарен за любую помощь.