SQL数据分析——连续数值差、连续时间差、连续登陆时间、连续离线时间

本文介绍了如何使用SQL进行数据分析,特别是计算连续登陆和离线的天数。通过步骤分析,展示了如何处理时间序列数据,确定用户最大连续登陆和离线天数。同时,给出了在特定条件(如连续登陆3天或离线7天以上)下的用户筛选方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQL数据分析——连续数值差、连续时间差、连续登陆时间、连续离线时间

分析思路

最近用SQL做数据分析,发现重要的不是怎么使用工具,而是怎样利用好原始数据,得到想要的分析内容。
在SQL中,面对一列时间,应该没有函数可以直接计算行与行之间的时间差。(以我目前浅显的函数库储备来看没有)
当我们面对一个求连续时间差的需求时,可以利用排序函数、分组函数等,得出分组下所有行的时间差。
对应的方案,也可以用于数值类的列差。

案例

有3个用户,登录表(login)的数据如下,求:
1. 每个用户的最大连续登陆天数
2. 每个用户的最大连续离线天数
3. 假设6月内连续登陆3天算活跃,找出6月有多少个活跃用户
4. 假设连续离线7天以上算流失,找出多少个用户流失后再登陆

id date
1 2023-06-01
1 2023-06-01
1 2023-06-02
1 2023-06-03
1 2023-06-07
1 2023-07-01
2 2023-06-15
2 2023-06-16
3 2023-06-21
3 2023-06-23
3 2023-06-24
3 2023-06-25

求连续登陆天数

本思路参考链接: SQL求连续时间问题

-----step1. 将用户登陆日期去重
select distinct id, date from login

-----step2. 将用户登陆日期,按照ID分组,登陆日期从小到大排序,我这里用的是开窗函数row_number(),可以参考站内大神的教程
with temp1 as (select distinct id, date from login)
select id, date, row_number()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值