我是靠谱客的博主 欢呼绿茶,最近开发中收集的这篇文章主要介绍SQL-统计连续N天登陆的用户,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

解题思路

  1. 用户每天登录的次数可能不止一次,因此先将用户每天登录的日期去重
  2. 然后将数据按用户ID分组,按照登录日期(yyyy-mm-dd)排序rn;
  3. 计算登录日期-rn(第二步的排序值) as diff_date – 用户连续登录的情况下,每次相减的结果都相同
  4. 按照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天登陆的用户所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部