Java教程

统计用户连续登陆最大的天数

本文主要是介绍统计用户连续登陆最大的天数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

注意: 断一天 也算连续登陆

 

1、创建建表语句

create table demo(
    id string, 
    dt string
) row format delimited fields terminated by '\t';

 

2、数据准备

1001    2021-08-01
1001    2021-08-02
1001    2021-08-03
1001    2021-08-05
1001    2021-08-06
1001    2021-08-07
1001    2021-08-10
1001    2021-08-12

 

3、数据导入

load data local inpath '/home/hadoop/demo.txt' into table demo;

 

4、sql 语句

点击展开全部
select
    id,
    flag,
    datediff(max(dt), min(dt)) + 1 as days
from(
    select
        id,
        dt,
        lag_dt,
        dt_diff,
        sum(if(dt_diff > 2, 1, 0)) over(partition by id order by dt) as flag
    from(
        select
            id,
            dt,
            lag_dt,
            datediff(dt, lag_dt) as dt_diff
        from(
            select 
                id,
                dt,
                lag(dt, 1, '1970-01-01') over(partition by id order by dt) as lag_dt
        from demo
        ) t1
    ) t2
) t3
group by id, flag
having datediff(max(dt), min(dt)) + 1 > 6

 

5、sql 解析

 

这篇关于统计用户连续登陆最大的天数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!