登入用戶,訂購用戶,活躍用戶,留存用戶

1、登入用戶,訂購用戶,資源訪問用戶

    SELECT 
        P.d,P.user_c,Q.pay_c,R.res_c
    FROM 
    (
        SELECT 
            DATE_FORMAT(create_date,'%Y-%m') AS d,
            COUNT(DISTINCT(userid)) AS user_c
        FROM user_table 
        WHERE create_date LIKE '2019-11%'
             AND product_key = "product_key1"
        GROUP BY d
    ) P
    LEFT JOIN
    (
        SELECT 
            DATE_FORMAT(create_time,'%Y-%m') AS d, 
            COUNT(DISTINCT userid) AS pay_c
        FROM
            order  
        WHERE  status = 1 
                AND create_time like '2019-11%' 
                AND product_key = "product_key1"
        GROUP BY d
    ) Q
    ON P.d = Q.d
    LEFT JOIN 
    (
        SELECT 
            DATE_FORMAT(create_date,'%Y-%m') AS d,
            COUNT(DISTINCT(userid)) AS res_c
        FROM pv.userres
        WHERE create_date LIKE '2019-11%'
            AND product_key = "product_key1"
        GROUP BY d
    ) R
    ON Q.d = R.d

2、某段時間留存用戶UV,訂購UV,資源訪問UV,活躍UV,沉默UV

   SELECT 
        "2019-8-01 ~ now" AS month_range,
        COUNT(DISTINCT userid) AS c_login_user,
        COUNT(DISTINCT pay_userid) AS c_pay_userid,
        COUNT(DISTINCT res_userid) AS c_res_userid,
        COUNT(DISTINCT activate_userid) AS c_activate_userid,
        COUNT(DISTINCT silence_user) AS c_silence_user
    FROM(
        SELECT 
            userid,
            (CASE WHEN -- 最近某段時間訂購用戶數
                    EXISTS( 
                        SELECT 1 FROM order t1 
                            WHERE t1.userid = t5.userid 
                                    AND status=1 
                                    AND product_key ="product_key1"
                                    AND create_time>='2019-8-01' 
                                    
                    )
                  THEN t5.userid ELSE NULL 
            END) AS pay_userid,
            
            (CASE WHEN  -- 最近某段時間資源訪問用戶數
                    EXISTS( 
                        SELECT 1 FROM pv.userres t2 
                            WHERE t2.userid = t5.userid 
                            AND product_key ="product_key1" 
                            AND create_date>='2019-8-01' 
                            
                    )
                THEN t5.userid ELSE NULL
            END) AS res_userid,
            
            (CASE WHEN  -- 最近三個月活躍用戶數,登入天數>20
                    (
                     SELECT 
                         count(DISTINCT create_date,t3.userid )
                     FROM pv_table t3 
                     WHERE t3.userid = t5.userid
                         AND create_date>='2019-8-01' 
                         AND product_key ="product_key1" 
                    )>=20
                THEN t5.userid ELSE NULL
            END) AS activate_userid,
            
            (CASE WHEN  -- 最近某段時間沉默用戶數,沒有訪問記錄
                NOT EXISTS( 
                    SELECT 1 FROM pv_table t4 
                    WHERE t4.userid = t5.userid 
                    AND product_key = "product_key1"
                    AND create_date>='2019-8-01' 
                )
                THEN t5.userid ELSE NULL
             END) AS silence_user,
            
            create_date 
        FROM user_table t5
        WHERE last_login_date>='2019-8-01' 
             AND product_key ="product_key1"
    )X

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章