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