ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

lead计算留存率

2022-02-15 16:34:51  阅读:230  来源: 互联网

标签:uid lead ds project 留存 计算 login dt id


lead 计算次日留存率,一般没有问题,但是如果统计第3日,第4日及以后,会有一点点的小问题,会存在逻辑不严谨;

正确代码

with tmp_da_uid_project as (
    select 
    ds
    ,to_date(ds,'yyyymmdd') as dt 
    ,project_id
    ,uid 
    ,count(distinct case when event_id = 2001 then uid end) as uv 
    ,count( case when event_id = 2001 then uid end) as pv
    ,count(distinct uid ) as uv_all
    ,count( uid ) as pv_all
    from tmp_zj_project_utrack_detail_quickbi 
    where event_id = 2001
    group by 
    ds
    ,project_id
    ,uid 
)

, tmp_da_uid_project_ext as (
  select 
 *
,datediff(t1.ds_login_lead,t1.dt,'dd') as diff_login_lead_project
,datediff(nvl(t1.ds_login_lead2,t1.ds_login_lead),t1.dt,'dd') as diff_login_lead2_project
  from(
    select 
    ds 
    ,dt 
    ,project_id
    ,uid 
    ,uv 
    ,pv 
    ,uv_all 
    ,pv_all 
    ,lag(dt,1)over(partition by project_id,uid order by dt asc  ) as ds_login_lag
    ,lead(dt,1)over(partition by project_id,uid order by dt asc  ) as ds_login_lead
    ,lead(dt,2)over(partition by project_id,uid order by dt asc  ) as ds_login_lead2
    from tmp_da_uid_project
   )t1

)

select 
ds
,project_id
,count(distinct uid ) as uv 
,count(distinct case when diff_login_lead_project = 1 then uid end) as 次日
,count(distinct case when diff_login_lead2_project = 2 then uid end) as 第3日
from tmp_da_uid_project_ext 
where project_id = '2178'
and uid = '1833905061400054'
group by 
ds
,project_id

错误代码示例截图:
明细数据信息

正确统计

错误统计

标签:uid,lead,ds,project,留存,计算,login,dt,id
来源: https://www.cnblogs.com/ministep/p/15897050.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有