基于事件的会话化而不是mySQL的时间戳

时间:2017-12-15 10:53:45

标签: mysql session

我有一张桌子需要为其创建会话。在此表中,我们记录了用户以及应用程序中发生的事件。当事件条目是登录时,需要拆分这些会话。在登录后发生的具有相同用户的任何条目都是同一会话的一部分,直到发生新的登录事件条目。

所以两个cols用户和事件,以及按用户分组的会话的分割以及何时需要将Event = 'app:login'添加到结果中。

I have created this very basic visual representation of my goal. Not sure if it helps mending the gaps of my explanation.

我正在考虑使用GROUP BY然后加入该结果然后在每一行上连接它。

1 个答案:

答案 0 :(得分:0)

我找到了我的答案,他们将一些随机的sql坦诚相处,直到我得到了我的结果。

SELECT *
  , "userid" || '_' || SUM(new_session)
  OVER (PARTITION BY "userid" ORDER BY "datetime") AS session_id
FROM (
  SELECT
    *,
    CASE WHEN "eventname" = 'login:bo:success'  THEN 1 ELSE 0 END as new_session
  FROM
    "TEST_events_prepared_2"
) s1