SQL查询用户的最长连续登陆天数
题目重点:连续
设表名字: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查询用户的最长连续登陆天数相关推荐
- SQL计算QQ连续登陆天数
最近遇到一个SQL查询需求:计算QQ连续登陆天数? 连续登陆天数不间断,如果有一天没登陆就重新计算. 数据准备 mysql> create table user_login(user_id in ...
- SQL(之二)-查询“最长连续登录天数“
0-创建表及插入测试数据 说明:本文主要想分享,如何查询"最长连续登录天数",具体的测试数据,可以自行添加. CREATE TABLE USER_LOGINFO( USER_ID ...
- SQL求用户的最大连续登陆天数
建表插入数据 create table tmp_continous (id STRING ,time DATETIME );INSERT OVERWRITE TABLE tmp_continous S ...
- 求用户最大连续登陆天数mysql实现
用户连续登陆 一.规定时间内用户最大连续登陆天数 二.user_login表字段(所有用户登陆信息) 三.分解步骤 1.where初步筛选 2.窗口函数分组排序 4.计算获得连续的字段 5.分组计算连 ...
- HIVE面试题原理详解 统计用户连续交易的总额、连续登陆天数、连续登陆开始和结束时间、间隔天数
HIVE面试题原理详解 统计用户连续交易的总额.连续登陆天数.连续登陆开始和结束时间.间隔天数 友情提示 创建数据表 添加数据 流程图 第一步分析(子表a) 第二步分析(子表b) 第三步分析(子表c) ...
- mysql 连续签到天数_获取连续登陆天数,连续签到天数 ,方法优化
获取连续登陆天数,连续签到天数,类似这样的需求应该是一个常见的需求,那么我们有没有一套成熟的解决方案呢 ?下面我来跟大家分享一下我的故事. 在猴年马月的一天,有个用户反馈个人中心打开缓慢,需要7.8秒 ...
- SQL计算连续登陆天数大于等于3天的用户
其中给出了用户(id)和用户登陆时间(dt)两列 其中要处理把登陆时间截取到日,然后根据id和登陆时间dt进行去重,然后得到如下的数据集 再进行下面的代码 select id, sdate, edat ...
- Hive SQL经典面试题:统计连续登陆的三天及以上的用户
Hive SQL经典面试题 最近发现一道大数据面试经常会问的SQL题目:统计连续登录的三天及以上的用户(或者类似的:连续3个月充值会员用户.连续N天购买商品的用户等),下面就来记录一下解题思路. 要求 ...
- SQL查询某个字段最长的数据
1.SQL Server select'字段', len('字段') from 表名 wherelen('字段') = (select max(len('字段')) from 表名 ) 2.MySQL ...
最新文章
- 从Sql server 2000 到 Oracle 10g数据库迁移数据类型转化
- main函数的参数argc和argv
- python爬虫豆瓣250_python爬虫二 爬取豆瓣Top250上
- 什么是 TCC分布式事务
- C#中的模块化软件开发
- numpy where
- C#版 微信无痕僵尸粉检测工具源码
- IT行业毕业生投简历或面试技巧
- kali Linux 上编译并使用RFID核弹——proxmark3
- web前端学习的职业发展方向
- Unity3d的场景音效静音处理
- 如何利用python画三棱锥_玩转CSS 3D -正四面体与正六面体
- Q9.1 Ruan upp a staircase
- selenium模拟登录某宝
- 【Nova】nova-consoleauth学习
- 安卓手机并没有“校准电池”的方式
- 用户留存率分析 表设计
- [MySQL] 统计图数据查询 (MySQL查询时间范围内所有日期)
- 利用Java反序列化漏洞在Windows上的挖矿实验
- 卡在返回驾驶舱–孤岛危机
热门文章
- 写一个有限差分法模拟三维地震波的python代码
- 论文导读: Stock Movement Prediction from Tweets and Historical Prices
- linux设备驱动开发详解孔夫子,Linux设备驱动开发详解
- 敢问路在何方,路在脚下(原创)
- python 数字的四舍五入的问题
- linux实现CP指令
- 【ipxe、clonezilla】iPXE启动Clonezilla实现镜像自动恢复及硬盘健康值检测探索
- Redis:Redis配置文件相关配置、Redis的持久化
- 苹果手机人脸识别不了是什么原因_安卓手机越用越卡顿,为何苹果手机不会?离不开这3点原因...
- win10自带计算机在哪,win10系统自带计算器功能在哪里