问题描述
在数据仓库中存在这样一张表,记录了2019年所有用户在哪天登录了我司的网站或者app。数据如下:
表名:test2
字段:id string,pday string
需求:统计用户在本年中连续登录天数最大是几天?如:
用户A在7月1、2、3、4日连续登录了4天;6、7、8日连续3天;11、12连续2天。用户A的当年最大连续登录天数是4天
用户B在6月29日,6月30日,7月1日连续登录3天。用户B的当年最大连续登录天数是3天
需要的到的结果是这样的:
题目刨析
此题需要将连续的天数打上相同的标签进行聚合。得到连续天数数量之后,取到最大值。
可难点就是确定哪些天数是连续的,凭什么将连续的日期放在一起呢?
我的思路是这样的,我们需要两个辅助列。
第一列:将每个用户的登录日期从小到大排序
第二列:登录日期在当年是第几天
我们先将两个辅助列写出来,看看是什么效果:
select
id