SQL - 计算排名会话之间的时差

时间:2016-07-29 07:28:01

标签: sql oracle date time rank

我有一些关于用户的数据'网站上的会话长度(即他们活跃的时间)。

它看起来像这样:

cust_id     dt          started_at          stopped_at          length  rank
10046493    28/10/2015  27/10/2015 23:45    28/10/2015 00:31    00:46   1
10046493    28/10/2015  28/10/2015 00:31    28/10/2015 00:43    00:12   2
10046493    28/10/2015  28/10/2015 00:43    28/10/2015 00:51    00:08   3
10046493    28/10/2015  28/10/2015 17:35    28/10/2015 18:03    00:28   4

每天可能有1个会话,但有些客户的负载更多(例如,我发现有85个以上的会员)。

我需要做的是检查一个会话结束和下一个会话开始之间的时差。如果差异小于30分钟,那么我需要将它们计为一个会话并计算总长度,否则它们应该是两个单独的会话。

所以我需要一个像这样的代码:

if rank2_start > (rank1_stop + 30) then DIFFERENT
if rank2_start < (rank1_stop + 30) then SAME >>>> in this case I also need rank2_stop - rank1_start (i.e. the difference between the two to get the total session length)

因为每天会有这么多会话,所以在列出rank1,rank2,rank3等时不能选择做大量的案例。

另一个问题是有人可能在半小时内开始了6次会议,所以他们都需要计算为一个。

有谁知道怎么做?如果它的超级复杂性很复杂,或者无法完成可用的数据,那也很好 - 这对我的分析来说只是一个很好的加分,但不是必需的。

由于

0 个答案:

没有答案