初学者超级超级希望大家提代码建议或学习建议!!!

连续登录问题:
把登录日期排序 row_number()over(partition by user order by date) as rk
(记得去重同一用户一日多次登录情况)
然后用登录时间减去rk 得到的时间一样就是连续登录
求最长连续登录时间,就算一下每个用户的count(时间一样)
易错:
1.用聚合函数的时候一定要想着分组!!!若在select语句里既有聚合函数又有非聚合列,同时不使用group by子句会报错。尽量减少在聚合函数中进行复杂的计算,因为这可能会影响性能。如果可能,先在子查询中进行数据处理,再进行聚合操作。
2.写完整体检查一下有没有拼写错误、中英文符号错误或者漏下题干条件。
with t1 as(
select distinct fdate,user_id,
row_number()over (partition by user_id order by fdate) as rk,
date_sub(fdate,interval row_number()over (partition by user_id order by fdate) day) as dt
from tb_dau
where fdate between '2023-01-01' and '2023-01-31'
group by user_id,fdate) ,
t2 as(
select user_id,
count(dt) as c
from t1
group by user_id,dt)
select user_id,max(c) as max_consec_days from t2 group by user_id;

1751

被折叠的 条评论
为什么被折叠?



