概述
解题思路
- 用户每天登录的次数可能不止一次,因此先将用户每天登录的日期去重;
- 然后将数据按用户ID分组,按照登录日期(yyyy-mm-dd)排序rn;
- 计算登录日期-rn(第二步的排序值) as diff_date – 用户连续登录的情况下,每次相减的结果都相同;
- 按照user_id, diff_date 分组,统计count(*)>N的个数,即得到最终的结果。
代码实现
select
user_id
from(
select
user_id, login_date,
date_sub(login_date, rn) diff_date
-- 第三步
from(
select
user_id, login_date,
row_number() over(partition by user_id order by login_date) rn
-- 第二步
from(select distinct user_id, login_date from login_info)t
-- 第一步
)tt
)ttt
group by user_id, diff_date
having count(*)>N
最后
以上就是欢呼绿茶为你收集整理的SQL-统计连续N天登陆的用户的全部内容,希望文章能够帮你解决SQL-统计连续N天登陆的用户所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复