【发布时间】:2019-02-26 04:33:15
【问题描述】:
我有一个具有以下架构的表。
Date Time Event_Type
2018-02-12 02:32:00 AM Session_Start
2018-02-12 03:15:00 AM event
2018-02-12 04:05:00 AM Session_Start
2018-02-12 10:10:00 AM event
2018-02-12 10:15:00 AM event
2018-02-12 10:25:00 AM event
2018-02-13 02:32:00 PM Session_Start
2018-02-13 03:15:00 PM event
2018-02-13 04:05:00 AM Session_Start
我想计算用户在特定会话期间花费的时间。因此,会话持续时间介于 Session_start 和下一个 Session_Start 之前的最后一个事件之间。
我曾想过使用以下命令将 Session_Start 作为一个组:
WITH grps AS (
SELECT Date, Time, Event_Type,
COUNTIF(Event_Type = 'Session_Start') OVER(PARTITION BY Date ORDER BY Time) grp
FROM `project.events`
)
但这似乎没用,除非我找到在 session_start 之前参加活动的方法。有人知道在这种情况下可以做什么吗?
【问题讨论】:
标签: sql google-bigquery