需求:最大连续日期
不知道大家有没有遇到类似这样的问题?如果认为本文校验方法和观点不错的话,记得收藏。针对目前的最大连续日期,处理的难点如下几个所示:
1.连续性。连续性决定了日期的跳跃和不可以把控。中断的连续日期如何重新开始新的日期计数。
2.同一个日期里存在多个数据,需要对相同数据日期打上同一个标签。
优点:可以看到不同区间段的时间连续性,在其他用户习惯行为分析比较贴切。
缺点:有一个业务情景可能会冲突,就是在多个相同连续天数,这个地方处理目前还不是很合理。
(建议对最大的连续天数再次group by 分组,取出组内的最大日期和最小日期。)
如有其它补充,欢迎留言。
方法一:
利用 dense_rank函数 对连续的日期进行去重排序 得到一个日期对应的序号。
--用日期减去序号得到一个假定的起始连续开始日期(这里的日期不一定是真实意义的连续开始日期)。
相同序号出现最多的日期为最大连续的时间段。
真实的连续起始日期为序号出现最多次数的最小日期。
只支持dense_rank的数据能用这个方法(SQLSERVER ORACLE)。
with t_lianxu as
(
select c.id,c.first_lianxu_time,count(distinct c.rn) lianxu_t