题目重点:连续

设表名字:user_login

第一步:使用ROW_NUMBER() 窗口函数 按UID分组,按date1升序排

-- 第一段首先根据用户分组,登陆时间排序,结果按照登陆时间升序排列
    SELECT 
    UID,
    date1,
    row_number() OVER(PARTITION BY UID order by date1) as sort
    FROM user_login

结果:

第二步:判断是否连续:

(升序排序后  : 用date1-sort  如果连续则做差后值一样,然后再用UID,login_group分组算出每个UID下连续的天数)

SELECT 
UID,
date_sub(date1,sort) as login_group,
min(date1) as start_date1,
max(date1) as end_date1,
count(1) as continuous_days
FROM (
    -- 第一段首先根据用户分组,登陆时间排序,结果按照登陆时间升序排列
    SELECT 
    UID,
    date1,
    row_number() OVER(PARTITION BY UID order by date1) as sort
    FROM user_login
) a
GROUP BY UID,date_sub(date1,sort)

第三步:再以UID分组,去取max(continuous_days)

SELECT 
UID,
max(continuous_days) as maxday

FROM 
(

SELECT 
UID,
date_sub(date1,sort) as login_group,
min(date1) as start_date1,
max(date1) as end_date1,
count(1) as continuous_days
FROM (
    -- 第一段首先根据用户分组,登陆时间排序,结果按照登陆时间升序排列
    SELECT 
    UID,
    date1,
    row_number() OVER(PARTITION BY UID order by date1) as sort
    FROM user_login
) a
GROUP BY UID,date_sub(date1,sort)

)b

GROUP BY UID

SQL查询用户的最长连续登陆天数相关推荐

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

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

  2. SQL(之二)-查询“最长连续登录天数“

    0-创建表及插入测试数据 说明:本文主要想分享,如何查询"最长连续登录天数",具体的测试数据,可以自行添加. CREATE TABLE USER_LOGINFO( USER_ID ...

  3. SQL求用户的最大连续登陆天数

    建表插入数据 create table tmp_continous (id STRING ,time DATETIME );INSERT OVERWRITE TABLE tmp_continous S ...

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

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

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

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

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

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

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

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

  8. Hive SQL经典面试题:统计连续登陆的三天及以上的用户

    Hive SQL经典面试题 最近发现一道大数据面试经常会问的SQL题目:统计连续登录的三天及以上的用户(或者类似的:连续3个月充值会员用户.连续N天购买商品的用户等),下面就来记录一下解题思路. 要求 ...

  9. SQL查询某个字段最长的数据

    1.SQL Server select'字段', len('字段') from 表名 wherelen('字段') = (select max(len('字段')) from 表名 ) 2.MySQL ...

最新文章

  1. 从Sql server 2000 到 Oracle 10g数据库迁移数据类型转化
  2. main函数的参数argc和argv
  3. python爬虫豆瓣250_python爬虫二 爬取豆瓣Top250上
  4. 什么是 TCC分布式事务
  5. C#中的模块化软件开发
  6. numpy where
  7. C#版 微信无痕僵尸粉检测工具源码
  8. IT行业毕业生投简历或面试技巧
  9. kali Linux 上编译并使用RFID核弹——proxmark3
  10. web前端学习的职业发展方向
  11. Unity3d的场景音效静音处理
  12. 如何利用python画三棱锥_玩转CSS 3D -正四面体与正六面体
  13. Q9.1 Ruan upp a staircase
  14. selenium模拟登录某宝
  15. 【Nova】nova-consoleauth学习
  16. 安卓手机并没有“校准电池”的方式
  17. 用户留存率分析 表设计
  18. [MySQL] 统计图数据查询 (MySQL查询时间范围内所有日期)
  19. 利用Java反序列化漏洞在Windows上的挖矿实验
  20. 卡在返回驾驶舱–孤岛危机

热门文章

  1. 写一个有限差分法模拟三维地震波的python代码
  2. 论文导读: Stock Movement Prediction from Tweets and Historical Prices
  3. linux设备驱动开发详解孔夫子,Linux设备驱动开发详解
  4. 敢问路在何方,路在脚下(原创)
  5. python 数字的四舍五入的问题
  6. linux实现CP指令
  7. 【ipxe、clonezilla】iPXE启动Clonezilla实现镜像自动恢复及硬盘健康值检测探索
  8. Redis:Redis配置文件相关配置、Redis的持久化
  9. 苹果手机人脸识别不了是什么原因_安卓手机越用越卡顿,为何苹果手机不会?离不开这3点原因...
  10. win10自带计算机在哪,win10系统自带计算器功能在哪里