zoukankan      html  css  js  c++  java
  • 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 ;
  • 相关阅读:
    css3
    如何去渲染数据?
    ajax
    Java多线程-线程安全
    java多线程-基础
    Git-团队开放中的代码同步与提交
    IDEA 调试Spring-boot 应用
    微服务-各种pom的配置和注解
    微服务-服务与注册中心
    微服务
  • 原文地址:https://www.cnblogs.com/hongchenlianxinlu/p/14005336.html
Copyright © 2011-2022 走看看