T-SQL中带分组、随机时差的非连续行日期差计算方法
连续分类段停留时长统计实现问题
基础场景说明
- 目前已检索查阅大量同类技术问题,暂未找到可匹配当前业务需求的落地方案。
- 现有业务表存储全量用户的行为记录列表,每条记录标记用户当时所属的分类,分类值在用户的记录序列中无固定重复规则:同一用户的记录排布上,可能连续多行归属A分类,之后连续若干行归属B分类,后续又再次回到A分类;每个分类对应的关联行数不固定,分类是否重复出现也没有预设规律。
- 现有表的前3列为数据库中已存在的原始业务字段,后2列为需要加工计算得到的目标字段,计算规则可参考配套示例表结构说明。
核心计算逻辑
需要实现的核心计算目标为:统计单个用户在某一连续分类段的停留时长,具体规则如下:
- 连续段判定规则:同一用户维度下,分类值发生连续变化的相邻记录归属不同的独立统计段。需特别注意:若用户从A分类跳转到B分类后再回到A分类,两次出现的A分类段属于独立统计对象,需分别计算时长,不得跨间隔合并。
- 单段时长取值规则:取该用户进入对应连续分类段的首次时间作为段起始时间,取用户切换到新分类段的首次时间作为段终止时间,基于起止时间计算该段的停留时长。
当前落地进展
已尝试多种技术实现方案,输出的计算结果均不符合业务预期,现寻求可正确落地的实现方法。
内容的提问来源于stack exchange,提问作者user2963880
相关产品推荐
相关产品推荐

