分类详情
用户最大连续登陆天数
问题是用户登陆埋点,会记录用户的id和记录的日期,原始数据如下:
id | ds |
---|---|
A | 2019-01-01 |
B | 2019-01-02 |
A | 2019-01-02 |
A | 2019-01-04 |
B | 2019-01-03 |
B | 2019-01-04 |
B | 2019-01-05 |
期望中的结果是统计用户A,和用户B分别最多连续登陆多少天:
id | days |
---|---|
A | 2 |
B | 4 |
问题的难点是,数据按天储存,并不知道同一id相邻两次登陆是否是连续,虽然可以查看相邻date相减看是否为1,但是要求最大连续天数,count也比较难操作。
我的思路是:先按id分区,按照ds递减排序,给予rank,并将rank与ds相加,理论上rank是隔1递增的,如果日期连续,则日期是隔1递减,因此连续日期的ds+rank应该相同:
id | ds | rank | rank&# |
---|