计算 7 日内留存率
(
( SELECT MOBILE_PHONE, UPDATE_TIME FROM
t_user_login_info WHERE UPDATE_TIME BETWEEN '2018-03-01' AND '2018-03-30'
GROUP BY MOBILE_PHONE, UPDATE_TIME ) a
LEFT JOIN ( SELECT MOBILE_PHONE,
min( UPDATE_TIME ) AS first_login FROM t_user_login_info WHERE
UPDATE_TIME BETWEEN '2018-03-01' AND '2018-03-30' GROUP BY
MOBILE_PHONE ) AS b ON a.MOBILE_PHONE = b.MOBILE_PHONE
)
ORDER BY
by_day DESC
) e where e.mobile_phone='18788551017' group by
e.MOBILE_PHONE,e.first_login
二、自连接实现方式
#--最早登录日期和最早用户
select min(UPDATE_TIME) as first_login ,MOBILE_PHONE as user_id_day0 from
t_user_login_info group by MOBILE_PHONE
-- 登录日期间隔
select
tt.first_login,
tt.user_id_day0,
count(tt.user_id_day1) as '1 日留存',
count(tt.user_id_day2) as '7 日留存',
count(tt.user_id_day3) as '8 日留存'
from (
SELECT
a.user_id_day0,a.first_login ,b.MOBILE_PHONE as
user_id_day1,c.MOBILE_PHONE as user_id_day2,d.MOBILE_PHONE as
user_id_day3
FROM
(
( SELECT min( UPDATE_TIME ) AS first_login, MOBILE_PHONE AS
user_id_day0 FROM t_user_login_info WHERE UPDATE_TIME BETWEEN '2018-03-
01' AND '2018-03-30' GROUP BY MOBILE_PHONE ) a
LEFT JOIN t_user_login_info b ON (DATEDIFF( b.UPDATE_TIME,
a.first_login ) = 1 and b.MOBILE_PHONE=a.user_id_day0 and b.UPDATE_TIME
BETWEEN '2018-03-01' AND '2018-03-30')
LEFT JOIN t_user_login_info c ON (DATEDIFF( c.UPDATE_TIME,
a.first_login ) = 7 and c.MOBILE_PHONE=a.user_id_day0 and c.UPDATE_TIME
BETWEEN '2018-03-01' AND '2018-03-30')
LEFT JOIN t_user_login_info d ON (DATEDIFF( d.UPDATE_TIME,
评论