连续登陆天数+最大登陆天数


转载:https://www.cnblogs.com/jiaxinwei/p/13936273.html

https://blog.csdn.net/godlovedaniel/article/details/106463180?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-14.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-14.no_search_link

 

互相是好友:https://www.cnblogs.com/alpha-cat/p/13082553.html

SQL计算最长登录天数

计算最长登陆天数主要用两个函数:1.窗口函数row_number()over() 2.date_sub()

1.使用row_number()窗口函数

1 select 
2     UID,
3     loadtime,
4     row_number()over(partition by UID order by loadtime) sort
5 from 
6     user_login

 

 

2.使用date_sub()函数

--取每个用户的连续登陆天数
1
select 2 UID, 3 date_sub(loadtime,sort) as date_group, --拿登陆时间和排序相减,如果差值是定值,可以分成一组,说明用户是连续登陆的 4 min(loadtime) as start, 5 max(loadtime) as end , 6 count(1) as continue_days --连续登陆天数 7 from( 8 select 9 UID, 10 loadtime, 11 row_number()over(partition by UID order by loadtime) sort 12 from 13 user_login 14 ) a 15 group by 16 UID, 17 date_sub(loadtime,sort)

 

3.以UID分组,取max(continue_days)

 1 --- 用户最大登陆天数
 2 SELECT
 3     UID,
 4     max(continue_days) as maxday
 5 FROM(
 6     select 
 7         UID,
 8         date_sub(loadtime,sort) as date_group,
 9         min(loadtime) as start, 
10         max(loadtime) as end ,
11         count(1) as continue_days
12     from(
13         select 
14             UID,
15             loadtime,
16             row_number()over(partition by UID order by loadtime) sort
17         from 
18             user_login
19         ) a
20     group by 
21         UID,
22         date_sub(loadtime,sort)
23 )t1
24 group by UID

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM