测试数据:
T1
Uid dt login_status(1登录成功,0异常)
1 2019-07-11 1
1 2019-07-12 1
1 2019-07-13 1
1 2019-07-14 1
1 2019-07-15 1
1 2019-07-16 1
1 2019-07-17 1
1 2019-07-18 1
2 2019-07-11 1
2 2019-07-12 1
2 2019-07-13 0
2 2019-07-14 1
2 2019-07-15 1
2 2019-07-16 0
2 2019-07-17 1
2 2019-07-18 0
3 2019-07-11 1
3 2019-07-12 1
3 2019-07-13 1
3 2019-07-14 1
3 2019-07-15 1
3 2019-07-16 1
3 2019-07-17 1
3 2019-07-18 1
需求:统计最大连续登录天数
--先对数据内的日期字段进行row_number排序,得到一列带标签的数据。
select
uid,
dt,
row_number() over(partition by uid order by dt) a
from sql2
where login_status <> 0 --这里是过滤掉无效的登录信息。
;
得到如下结果:
uid dt a
1 2019-07-11 1
1 2019-07-12 2
1 2019-07-13 3
1 2019-07-14 4
1 2019-07-15 5
1 2019-07-16 6
1 2019-07-17