我想要一个包含customerid,登录时间戳,注销时间戳和会话持续时间的表。目前,我有一个带有客户ID,登录时间戳,注销时间戳和事件之间持续时间的表。我想将同一个会话中minidef低于20的所有行都考虑在内。
因此,上表将显示在下表中,其中mindiff 160是会话之间的截止时间。
是否可以根据条件对mindiff求和并保留登录和注销日期?
答案 0 :(得分:0)
您可以使用累计和分配“会话”值。然后过滤并汇总:
select customer, min(login), max(logout)
from (select t.*,
sum(case when mindiff >= 160 then 1 else 0 end) over (partition by customerid order by login) as grp
from t
) t
where mindiff < 160
group by grp, customerid;