基于条件的红移总和列值

时间:2019-12-19 08:22:22

标签: sql amazon-redshift

我想要一个包含customerid,登录时间戳,注销时间戳和会话持续时间的表。目前,我有一个带有客户ID,登录时间戳,注销时间戳和事件之间持续时间的表。我想将同一个会话中minidef低于20的所有行都考虑在内。

Snippet of table

因此,上表将显示在下表中,其中mindiff 160是会话之间的截止时间。

snippet of the table i want


是否可以根据条件对mindiff求和并保留登录和注销日期?

1 个答案:

答案 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;