SQL計算留存率指標

select *,
	concat(round(100 * 次日留存用戶數/活躍用戶數, 2), '%') 次日留存率,
	concat(round(100 * 三日留存用戶數/活躍用戶數, 2), '%') 三日留存率,
	concat(round(100 * 七日留存用戶數/活躍用戶數, 2), '%') 七日留存率
from (
	select 
		a.log_day 日期,
		count(distinct(concat(a.device_id, a.app_id))) 活躍用戶數,
		count(distinct(concat(b.device_id, b.app_id))) 次日留存用戶數,
		count(distinct(concat(c.device_id, c.app_id))) 三日留存用戶數,
		count(distinct(concat(d.device_id, d.app_id))) 七日留存用戶數
	from user_log a
	left join user_log b on concat(a.device_id, a.app_id) = concat(b.device_id, b.app_id) and b.log_day = a.log_day + 1
	left join user_log c on concat(a.device_id, a.app_id) = concat(c.device_id, c.app_id) and c.log_day = a.log_day + 3
	left join user_log d on concat(a.device_id, a.app_id) = concat(d.device_id, d.app_id) and d.log_day = a.log_day + 7
	group by a.log_day
	) p;

 

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