• SQL 实现月度留存率/复购率


    s q l实现用户的月度留存率/复购率

    准备阶段:建立一个中间表 用户ID,用户复购或者访问时间即可。

    注意点:注意去重

    最好,跑出结果以后自己验证一下。

    DROP TABLE IF EXISTS bigdata2c.temp_shoe_daidai_1118_04 ;
    CREATE TABLE IF NOT EXISTS bigdata2c.temp_shoe_daidai_1118_04 AS
    SELECT  distinct a.order_month
                        ,count(distinct a.user_id_month_0)  
                        ,count(distinct b.client_str)
                        ,count(distinct c.client_str) 
    ,count(distinct d.client_str)
    ,count(distinct f.client_str) ,count(distinct g.client_str) ,count(distinct h.client_str) ,count(distinct i.client_str) ,count(distinct j.client_str) ,count(distinct k.client_str) ,count(distinct l.client_str) ,count(distinct m.client_str) ,count(distinct n.client_str) FROM ( SELECT distinct SUBSTR(create_time,1,6) as order_month ,client_str AS user_id_month_0 FROM bigdata2c.temp_shoe_daidai_1118_01 where client_str is not NULL and create_time is not NULL and SUBSTR(create_time,1,6) >=201910 and SUBSTR(create_time,1,6) <=202010 ) a LEFT JOIN bigdata2c.temp_shoe_daidai_1118_02 b ON DATEDIFF( to_date(b.order_month,'yyyymm'),to_date(a.order_month,'yyyymm'),'mm') = 1 AND a.user_id_month_0 = b.client_str LEFT JOIN bigdata2c.temp_shoe_daidai_1118_02 c ON DATEDIFF( to_date(c.order_month,'yyyymm'),to_date(a.order_month,'yyyymm'),'mm') = 2 AND a.user_id_month_0 = c.client_str LEFT JOIN bigdata2c.temp_shoe_daidai_1118_02 d ON DATEDIFF( to_date(d.order_month,'yyyymm'),to_date(a.order_month,'yyyymm'),'mm') = 3 AND a.user_id_month_0 = d.client_str LEFT JOIN bigdata2c.temp_shoe_daidai_1118_02 f ON DATEDIFF( to_date(f.order_month,'yyyymm'),to_date(a.order_month,'yyyymm'),'mm') = 4 AND a.user_id_month_0 = f.client_str LEFT JOIN bigdata2c.temp_shoe_daidai_1118_02 g ON DATEDIFF( to_date(g.order_month,'yyyymm'),to_date(a.order_month,'yyyymm'),'mm') = 5 AND a.user_id_month_0 = g.client_str LEFT JOIN bigdata2c.temp_shoe_daidai_1118_02 h ON DATEDIFF( to_date(h.order_month,'yyyymm'),to_date(a.order_month,'yyyymm'),'mm') = 6 AND a.user_id_month_0 = h.client_str LEFT JOIN bigdata2c.temp_shoe_daidai_1118_02 i ON DATEDIFF( to_date(i.order_month,'yyyymm'),to_date(a.order_month,'yyyymm'),'mm') = 7 AND a.user_id_month_0 = i.client_str LEFT JOIN bigdata2c.temp_shoe_daidai_1118_02 j ON DATEDIFF( to_date(j.order_month,'yyyymm'),to_date(a.order_month,'yyyymm'),'mm') = 8 AND a.user_id_month_0 = j.client_str LEFT JOIN bigdata2c.temp_shoe_daidai_1118_02 k ON DATEDIFF( to_date(k.order_month,'yyyymm'),to_date(a.order_month,'yyyymm'),'mm') = 9 AND a.user_id_month_0 = k.client_str LEFT JOIN bigdata2c.temp_shoe_daidai_1118_02 l ON DATEDIFF( to_date(l.order_month,'yyyymm'),to_date(a.order_month,'yyyymm'),'mm') = 10 AND a.user_id_month_0 = l.client_str LEFT JOIN bigdata2c.temp_shoe_daidai_1118_02 m ON DATEDIFF( to_date(m.order_month,'yyyymm'),to_date(a.order_month,'yyyymm'),'mm') = 11 AND a.user_id_month_0 = m.client_str LEFT JOIN bigdata2c.temp_shoe_daidai_1118_02 n ON DATEDIFF( to_date(n.order_month,'yyyymm'),to_date(a.order_month,'yyyymm'),'mm') = 12 AND a.user_id_month_0 = n.client_str group by a.order_month ;
  • 相关阅读:
    Vue3.0 是如何变得更快的?
    阿里云 Centos7 安装mongodb
    ASP.Net Core5.0 EF Core使用记录
    MongoDB批量更新|按条件更新SQL|批量删除某个字段
    Layui单元格编辑获取修改前的值
    判断字符串出现的多个位置
    原生JavaScript的DOM操作汇总
    @Value值为null、#和$的区别
    Dubbo推荐用法
    Dubbo 服务化最佳实践
  • 原文地址:https://www.cnblogs.com/hongchenlianxinlu/p/14005336.html
Copyright © 2020-2023  润新知