sql - 复杂的分组案例 - 在组之间使用“分隔 tinyint 标志”
问题描述
以下是相关页面浏览数据集的示例。
呈现的记录按 ASC 顺序按时间戳排序。
我需要从数据集中计算一些每次会话的度量。
问题是会话没有明确的标识符。唯一可用的是is_a_new_session
标志 - 它用作会话之间的一种分隔符。因此,在给定的示例中,有 5 个单独的会话。
如何生成某种会话标识符并将其添加到数据集,以便以后可以将其用于对每个会话进行分组?
解决方案
使用累积和来定义组,然后聚合:
select min(timestamp), max(timestamp), . . . -- whatever columns you want
from (select t.*,
sum(is_a_new_session) over (order by timestamp) as grp
from t
) t
group by grp;
推荐阅读
- ruby-on-rails - 添加辅助函数以使整个标签可点击以在 Rails 中进行排序
- python - Pandas Pivot 和 Un Pivoting a table
- node.js - .sort 是否始终保持项目的时间顺序?
- c - 用于替换数组下标的 C 宏
- java - Javax Servlet - 多部分作为响应
- c++ - regex_match 期间的 error_stack
- excel - Excel VBA,带有评估(MAX(IF))条件的自定义搜索 - 不匹配错误
- typo3 - Fluid Typolink ViewHelper 忽略附加参数属性
- javascript - 在jquery中单击选项卡时禁用单击?
- python - 使数据框列等于另一个时获取 nan