高阶SQL

这篇博客探讨了如何通过分析用户登录数据来确定用户的连续活跃天数。利用DATE_SUB函数和ROW_NUMBER窗口函数,可以计算用户每日登录的连续性。此外,还展示了如何计算用户的最长连续活跃天数,并进行用户分位计算,为用户行为分析提供关键指标。
摘要由CSDN通过智能技术生成
-- DATE_SUB(login_date,rn):如果连续则做差后值一样则表示连续活跃
SELECT
	USER_ID,
	LOGIN_DATE,
	DATE_SUB( LOGIN_DATE, RN ) AS DIFF_DATE 
FROM
( 
   SELECT USER_ID,LOGIN_DATE,
          ROW_NUMBER ( ) OVER ( PARTITION BY USER_ID ORDER BY LOGIN_DATE ) AS RN 
          FROM TEST.USER_LOGIN 
) T1
select 
   user_id,
   count(diff_date) as total
from
(
	select user_id,
	       login_date,
	       date_sub(login_date,rn) as diff_date
	from(
	    select 
			user_id,
			login_date,
			row_number() over(partition by user_id order by login_date) as rn
		  from test.user_login
	)t1
)t2
group by 
user_id,
diff_date

用户的最长连续活跃天数:

WITH tmp AS(  
          SELECT 1 AS group_id, '2021-03-01' as  day
UNION ALL SELECT 1 AS group_id,  '2021-03-02' as  day
UNION ALL SELECT 1 AS group_id,  '2021-03-04' as  day
UNION ALL SELECT 1 AS group_id,  '2021-03-05' as  day
UNION ALL SELECT 1 AS group
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值