• 建表插入数据

create table tmp_continous
(id STRING ,time DATETIME
);INSERT OVERWRITE TABLE  tmp_continous
Select '201', '2017-01-01 00:00:00' union all
Select '201','2017-01-02 00:00:00' union all
Select '202','2017-01-02 00:00:00' union all
Select '202','2017-01-03 00:00:00' union all
Select '203','2017-01-03 00:00:00' union all
Select '201','2017-01-04 00:00:00' union all
Select '202','2017-01-04 00:00:00' union all
Select '201','2017-01-05 00:00:00' union all
Select '202','2017-01-05 00:00:00' union all
Select '201','2017-01-06 00:00:00' union all
Select '203','2017-01-06 00:00:00' union all
Select '203','2017-01-07 00:00:00';

  • 去重数据,保证每天有且仅有一条登陆数据
select id,timefrom  tmp_continousgroup by id,time
  • 对数据进行排序处理
select  id,time, ROW_NUMBER() OVER (PARTITION  by id order by time) as order_sortfrom tmp_continous
  • 利用登陆时间 - 排序得到的序列号,如果减去后得到的结果是同一天,则说明是连续的;否则是不连续的。这里需要仔细体会以下,也可以看下面这张图。

    • 比如是2017-01-01 sort为1;2017-01-02 sort为2;减去sort之后都是 2016-12-31。如果出现一个 2017-01-04  sort为3,那么减去后的结果是2017-01-01那么就是不连续的
select id,time,order_sort,dateadd(time,order_sort,'dd') as simi_dayfrom(select id,time,cast(concat("-",cast(order_sort as STRING)) as INT) as order_sortfrom(select id,time, ROW_NUMBER() OVER (PARTITION  by id order by time) as order_sortfrom tmp_continous) t)m 

  • group by 取count、max等
select id,max(continous ) from(
select t2.id,count(t2.simi_day) as continous
from
(select id,time,order_sort,dateadd(time,order_sort,'dd') as simi_dayfrom(select id,time,cast(concat("-",cast(order_sort as STRING)) as INT) as order_sortfrom(select id,time, ROW_NUMBER() OVER (PARTITION  by id order by time) as order_sortfrom tmp_continous) t)m )t2group by t2.id,t2.simi_day) zgroup by id;

  • 需求在进一步,需要当前最大的连续登陆天数

    • 方法是利用时间的由大到小排(刚才是由小到大排),然后同样得出排列号码,不过要在基础上减一,因为当天的date_add是 + 0 而不是跟上面那样减一
    • 后续的操作跟上面一样

SQL求用户的最大连续登陆天数相关推荐

  1. 求用户最大连续登陆天数mysql实现

    用户连续登陆 一.规定时间内用户最大连续登陆天数 二.user_login表字段(所有用户登陆信息) 三.分解步骤 1.where初步筛选 2.窗口函数分组排序 4.计算获得连续的字段 5.分组计算连 ...

  2. SQL计算QQ连续登陆天数

    最近遇到一个SQL查询需求:计算QQ连续登陆天数? 连续登陆天数不间断,如果有一天没登陆就重新计算. 数据准备 mysql> create table user_login(user_id in ...

  3. HIVE面试题原理详解 统计用户连续交易的总额、连续登陆天数、连续登陆开始和结束时间、间隔天数

    HIVE面试题原理详解 统计用户连续交易的总额.连续登陆天数.连续登陆开始和结束时间.间隔天数 友情提示 创建数据表 添加数据 流程图 第一步分析(子表a) 第二步分析(子表b) 第三步分析(子表c) ...

  4. mysql 连续签到天数_获取连续登陆天数,连续签到天数 ,方法优化

    获取连续登陆天数,连续签到天数,类似这样的需求应该是一个常见的需求,那么我们有没有一套成熟的解决方案呢 ?下面我来跟大家分享一下我的故事. 在猴年马月的一天,有个用户反馈个人中心打开缓慢,需要7.8秒 ...

  5. SQL查询用户的最长连续登陆天数

    题目重点:连续 设表名字:user_login 第一步:使用ROW_NUMBER() 窗口函数 按UID分组,按date1升序排 -- 第一段首先根据用户分组,登陆时间排序,结果按照登陆时间升序排列 ...

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

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

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

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

  8. sql案例分析:统计连续登陆、日活、蚂蚁森林、排名等

    # 当天新用户hive -e \'select count(1) from hm2.daily_helper \where guid not in (select guid from hm2.hist ...

  9. 如何统计连续(连续登陆天数,连续学习天数,连续购买天数)

    直接来看实战,现在有一张表t,这张表存储了每个员工每天的打卡情况,现在需要统计截止目前每个员工的连续打卡天数,表t如下表所示: uid    tdate    is_flag 1    2020/2/ ...

最新文章

  1. 团队项目个人进展——Day08
  2. Linux下route add 命令加入路由列表
  3. 怎样才能找出哪个 CPU 内核正在运行该进程?(一)
  4. 独家!支付宝小程序技术架构全解析
  5. std string与线程安全_C++标准库多线程简介Part1
  6. No fallback instance of type class found for feign client user-service(转)
  7. 使用EFI引导从硬盘(U盘)安装Win7的图文教程
  8. CDN缓存服务器现状
  9. 02331 数据结构 学习小记 归纳总结
  10. 基础 | 这波编程基础绝了!快来学习!
  11. gulp教程之gulp-htmlmin压缩html
  12. python 线性回归 约束_PyTorch线性回归和逻辑回归实战示例
  13. 深入理解异步I/O+epoll+协程
  14. 纵向合并gridview单元格的两种方法
  15. 转:Apple的App Analytics统计平台你必须知道的
  16. 一条查询SQL的执行流程
  17. 我的世界服务器连接协议,go-mc: Minecraft(我的世界)各种协议的Go实现
  18. iOS开发者知识普及,Swift 挑战 Objective-C,谁会笑到最后?
  19. 学会这些句子,你还愁英语单词吗
  20. 操作系统第6次实验报告:使用信号

热门文章

  1. 云麦体脂秤华为体脂秤_华为、小米、联想的智能体脂秤三国杀
  2. 表格标题 caption
  3. HDU杭电OJ经典100题2000-2099_Java版详细题解(持续更新)
  4. Empty4Raycast 空白背景图片点击
  5. 升级IOS10 出现的兼容性的问题
  6. Unity任意轴向朝向某目标实现LookAt功能
  7. ktor启动报错:Module function cannot be found for the fully qualified name 'ApplicationKt.module'
  8. (译)三维空间中的几种坐标系
  9. 一种Δ-Σ模数转换器中梳状滤波器的设计
  10. char能不能存中文字符