大数据经典sql

一、连续登录问题

问题:1)、每个用户连续登录最大天数

            2)、连续登录大于三天的用户数

分析:本质都是计算用户连续登录天数

方案一:利用排序窗口

select a.user_id
      ,a.date_rslt
      ,count(1) as cnt
from (
        select    
            t.user_id
            ,t.login_time
            ,date_sub(login_time, num) as date_rslt
         from (
                select 
                    user_id
                    ,login_time
                    ,row_number() over(partition by user_id order by login_time) as num
                from login_log
         ) t
      ) a
group by a.user_id,a.date_rslt

方案二、增量加全量

连续访问天数v_days(最新flag值为1,则v_days累加,否则为0)

历史最大访问天数max_days (从max_days、v_days中取最大值)

select 
    coaleasce(h.user_id,i.user_id) as user_id,
    if(i.user_id is not null,v_days+1,0) as v_days,
    greatest(max_days,if(i.user_id is not null,v_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值