首页 > 解决方案 > 特定行之间的差异

问题描述

我想估计用户在外部链接上停留的时间。因此,我想看看他们点击外部链接的时间和他们下次点击我的网站的时间之间的区别。

我的数据库如下所示(重要列说明):

到目前为止,我已经确定了所有具有 > 1 clsfd_event_action 的会话。但是,我很难过滤掉会话必须具有外部链接单击以及其他 clsfd_event_action(s)。

select clsfd_session_id, count(*)
from table
group by 1
having clsfd_session_id> 1

我想要的是所有具有外部链接点击(= R2SExternalBegin)的会话,然后是另一行(这样会话不会结束,但访问者会返回我的站点)。

在下图中,您可以看到1 个会话,包括 1 个外部链接点击 (R2SExternalBegin),然后是 1 行/多行(因此会话不会在外部链接处结束)。红色矩形最后一列数字之间的差异是在外部链接上花费的时间。 在此处输入图像描述

我想要的输出: 所有具有 1 个/多个 R2SExternalBegin clsfd_event_action 的会话,后跟另一行(这意味着用户返回站点)。请注意,大约有 50 种不同的 clsfd_event_actions。

标签: sqlteradata

解决方案


select clsfd_session_id, count(*)
from table
group by 1
having
   -- there was a 'R2SExternalBegin'
   min(case when clsfd_event_action  = 'R2SExternalBegin' then hit_start_time_num end)
   -- and there was different action later
 < max(case when clsfd_event_action <> 'R2SExternalBegin' then hit_start_time_num end)

推荐阅读