Я хотел бы GROUP BY несколько строк в SQL на основе «времени бездействия», , что означает заметные большие промежутки между отметками времени, чтобы распознать пользователя сеансов.найти сеансы пользователей, группируя близлежащие временные метки
Пусть эта таблица действия в SQLite базы данных:
_actions_
| id | userID | timestamp | actionType |
Теперь я могу просмотреть все действия пользователя и его тип сгруппированных по часу, месяц, год и т.д.
SELECT
userID, strftime('%H', timestamp), group_concat(actionType)
FROM
actions
GROUP BY userID, strftime('%H', timestamp);
Однако, это не совсем то, что я хочу. Рассмотрим это:
| 1 | 333 | 13.11.2014-20:59 | action6 |
| 2 | 333 | 13.11.2014-21:01 | action3 |
| 3 | 333 | 13.11.2014-21:47 | action5 |
Мой пример сливается в строке 1 и строке 2 + 3, однако, если мы предположим, сеанс таймаут 30 минут мы должны получить ряд 1 + 2 и строка 3. Есть SQL-идеи?
Конечно, можно загрузить базу данных и в R, Pandas и т. Д. И проверить для каждого пользователя, если current_timestamp - last_timestamp> 30min, но действительно ли это путь?