1. 输入与输出

输入

现有用户活跃数据记录,用户id、活跃时间

用户id 活跃日期
a 2021-07-01
a 2021-07-02
a 2021-07-03
a 2021-07-07
b 2021-05-28
b 2021-05-29
b 2021-05-30
b 2021-05-31
b 2021-07-01
b 2021-07-02
c 2021-05-30
c 2021-06-01
c 2021-06-02

输出

求用户活跃的最大连续天数

用户 连续活跃最大天数
a 3
b 4
c 2

2. SQL代码

代码如下:

with tmp(gaid,ds) as (values ('a',date'2021-07-01')
,('a',date'2021-07-02')
,('a',date'2021-07-03')
,('a',date'2021-07-07')
,('b',date'2021-05-28')
,('b',date'2021-05-29')
,('b',date'2021-05-30')
,('b',date'2021-05-31')
,('b',date'2021-06-02')
,('b',date'2021-07-01')
,('b',date'2021-07-02')
,('c',date'2021-05-30')
,('c',date'2021-06-01')
,('c',date'2021-06-02')
)
, rn_tmp as ( --1.按gaid分组,时间排序,计算每个日期对应的连续编号
select gaid, ds , row_number() over(partition by gaid order by ds) as rn
from tmp
)
, assume_tmp as ( --2.计算如果连续,每个日期对应的起始日期
select gaid, ds , rn , date_add('day',-rn,ds) as assume_ds
from rn_tmp
)
, con_tmp as ( --3.通过假设的连续起始日期聚合,计算每个连续区间的连续天数
select gaid, assume_ds, min(ds) as origin_ds , count(1) as con_day
from assume_tmp
group by gaid, assume_ds
)
select --4.取每个用户的最大活跃天数gaid, max(con_day)
from con_tmp
group by gaid
​

3. 总结表述

  1. 筛选出要统计日期的活跃用户,并去重

  2. 对用户活跃日期进行排名

  3. 计算用户活跃日期及排名之间的差值日期

  4. 按用户及差值日期分组,统计差值个数,即为用户连续活跃天数

SQL求连续活跃天数相关推荐

  1. hive面试题——求连续活跃天数

    问题:求一个月用户连续活跃3天以上的用户 数据格式如下: cust_no Active date 1 20211201 1 20211202 1 20211203 1 20211204 1 20211 ...

  2. SQL——最大连续登录天数、当前连续登录天数、最大连续未登录天数问题、连续登陆N天用户、连续座位号

    问题: 最大连续登录天数 当前连续登录天数 最大连续未登录天数 连续登陆3天用户(三种方法) 选出连续座位的编号 前三个问题所用数据: 原数据表:user_active表 表字段:用户.新增日期.活跃 ...

  3. Hive sql : 查询连续登录天数

    查询连续登录天数 1.问题描述 2.在Hive中建表 3.查询最大连续登录天数 1.问题描述 目前有两列数据,分别是用户ID和用户登录的时间,现需要统计用户连续登录的最大天数,中间如有断开,则不算连续 ...

  4. SQL计算连续登陆天数大于等于3天的用户

    其中给出了用户(id)和用户登陆时间(dt)两列 其中要处理把登陆时间截取到日,然后根据id和登陆时间dt进行去重,然后得到如下的数据集 再进行下面的代码 select id, sdate, edat ...

  5. excel frequency函数(求不同年龄段人数,求连续工作天数)

    我们在工作中经常会遇到计算连续次数最大的问题,计算连续次数最常用的函数就是FREQUENCY,下面就这个函数在计算连续次数的应用做一个详细图解.        首先,我们需要了解一下FREQUENCY ...

  6. Hive SQL复杂场景实现(1) —— 连续发单天数

    本文同时发表于我的个人博客http://xinyuwg.com,访问该链接以获得详细信息与更好的阅读体验. 本文为原创内容,未经允许请勿转载. 至今在数据分析岗摸爬滚打已有一年,尚且不敢说自己挖掘洞见 ...

  7. Hive SQL— 连续发单天数

    背景 数据运营人员常常会需要查找活跃用户名单,而活跃用户很多情况下被定义为连续在线或发单n天及以上的用户.一方面我们可以根据n的值直接进行筛选:更具一般性地,就要求我们去求取每个用户某段时间内的最大连 ...

  8. Hive_HQL_复杂SQL_连续发单天数

    原文地址: 1.Hive SQL复杂场景实现(1) -- 连续发单天数 https://blog.csdn.net/Adrian_Wang/article/details/89791948 至今在数据 ...

  9. 大数据练习题mysql之求连续出勤和连续最大登陆天数

    某APP活跃用户,字段uid和dt两个字段,求连续出勤天数大于等于三天的用户和用户最大登录天数 求连续出勤天数,使用row_number()方法: SELECT a.uid,DATE_SUB(a.dt ...

  10. 从用户连续活跃的最大天数说起

    问题引入 最近经常碰到这样的问题,每天每个城市播放最多的10首歌,某月每支股票连续下跌/上涨的最大天数,用户连续活跃的最大天数,初步看起来都和分析函数相关,考验逻辑思维和写复杂SQL的能力. 以用户连 ...

最新文章

  1. Session对象的生命周期
  2. CodeForces - 1400D Zigzags(简单dp)
  3. docker镜像和容器区别
  4. Docker CE for CentOS的安装(对官方文档的翻译)
  5. python爬虫什么意思-终于知道python爬虫是什么意思
  6. NodeJS Stream(可读流、可写流) API解读
  7. 斯皮尔曼相关系数计算的python代码
  8. 电脑常见故障及解决方法
  9. postgresql 数据库 update 语句的初步使用
  10. 大学物理复习笔记:刚体力学基础,动量矩
  11. 播放视频时过滤播霸浏览器
  12. 透彻理解高斯过程Gaussian Process (GP)
  13. Teacher Forcing for Recurrent Neural Networks
  14. AutoCAD C# 自动加载自定义RibbonUI界面
  15. 基于51单片机的4位竞赛抢答器的设计
  16. 我是怎么薅的双十一羊毛
  17. java 从excel中读取数据_java中怎样从Excel中读写数据
  18. 操作系统之文件系统:4、文件存储空间管理(空闲表法、空闲链表法、位示图法、成组链接法)
  19. java中已实现的md5加密
  20. SQL基本语句应用大全

热门文章

  1. 裸看美剧必备英文词汇文章索引
  2. 第十届江泽涵杯数学建模与计算机应用竞赛试题,2016江泽涵杯一等奖论文.doc...
  3. Win11如何设置系统还原点?
  4. excel公式编辑器_快速智能的制作电子表格,除了excel还有这些优秀的软件值得拥有...
  5. 生产计划排产软件如何解决生产难题?
  6. trivial destructor
  7. 锁相放大器在中微流控的应用
  8. 「免费 | 重磅」9月19日首届智能决策论坛即将开幕!(附带10+位作者演讲主题及摘要)「中国科学院自动化研究所」...
  9. NIO网络编程中重复触发读(写)事件
  10. SmartGit 授权文件