「非アクティブ時間」に基づいて SQL のいくつかの行を GROUP BY したいと思います。つまり、ユーザー セッションを認識するために、タイムスタンプ間に大きなギャップがあることに注意してください。
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 のアイデアはありますか?
current_timestamp - last_timestamp > 30minの場合、データベースとR、Pandasなどをロードして各ユーザーを確認できますが、これは本当に行くべきですか?