連續登陸天數+最大登陸天數


轉載: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