sql - 特定行之间的差异
问题描述
我想估计用户在外部链接上停留的时间。因此,我想看看他们点击外部链接的时间和他们下次点击我的网站的时间之间的区别。
我的数据库如下所示(重要列说明):
- clsfd_session_id(每个会话的标识符,我希望每个会话都花时间在外部链接上)。
- clsfd_event_action:在网站上执行的点击(例如外部链接点击)。
- clsfd_total_event:事件执行的点击次数。
- clsfd_event_categ:事件动作所属的类别。
- hit_start_time_num:动作执行的时间(以秒为单位)。
到目前为止,我已经确定了所有具有 > 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。
解决方案
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)
推荐阅读
- javascript - 通过 onClick 选择语言
- javascript - React Native - setState 在传递数据时未定义
- r - 如何使用R中的条件分隔变量中的级别
- matplotlib - 在 Google Colaboratory 上保存或下载 matplotlib 绘图图像
- logging - 以简洁的方式在 java8 Predicate 中记录条件结果
- ruby-on-rails - 页面更改时 Rails 应用程序中的视频/图像故障
- reactjs - 如何将UTC时间戳转换为本地浏览器时间
- json - 使用 fs.writeFileSync() 写入文件时附加匿名换行符
- excel - vba值改变多个值
- laravel - Laravel 自定义规则将值与数据库进行比较