使用當前日期往前推, 一至七日, 每日存留都會更新, 最新存留信息
推薦使用定時調度任務每日23:55 分執行, 這個查詢數據量比較大
用戶表裏必須有兩個字段, 用戶創建時間create_time(類型爲date,YMD), 最後登入時間last_login
SELECT
IFNULL((
(SELECT COUNT(*) FROM ylb_account WHERE create_date = DATE_ADD(DATE_FORMAT(NOW(),'%y-%m-%d'),INTERVAL -1 DAY) AND last_login >= DATE_FORMAT(NOW(),'%y-%m-%d'))/
(SELECT COUNT(*) FROM ylb_account WHERE create_date = DATE_ADD(DATE_FORMAT(NOW(),'%y-%m-%d'),INTERVAL -1 DAY))
),0) one_day,
IFNULL((
(SELECT COUNT(*) FROM ylb_account WHERE create_date = DATE_ADD(DATE_FORMAT(NOW(),'%y-%m-%d'),INTERVAL -2 DAY) AND last_login >= DATE_FORMAT(NOW(),'%y-%m-%d'))/
(SELECT COUNT(*) FROM ylb_account WHERE create_date = DATE_ADD(DATE_FORMAT(NOW(),'%y-%m-%d'),INTERVAL -2 DAY))
),0) tow_day,
IFNULL((
(SELECT COUNT(*) FROM ylb_account WHERE create_date = DATE_ADD(DATE_FORMAT(NOW(),'%y-%m-%d'),INTERVAL -3 DAY) AND last_login >= DATE_FORMAT(NOW(),'%y-%m-%d'))/
(SELECT COUNT(*) FROM ylb_account WHERE create_date = DATE_ADD(DATE_FORMAT(NOW(),'%y-%m-%d'),INTERVAL -3 DAY))
),0) three_day,
IFNULL((
(SELECT COUNT(*) FROM ylb_account WHERE create_date = DATE_ADD(DATE_FORMAT(NOW(),'%y-%m-%d'),INTERVAL -4 DAY) AND last_login >= DATE_FORMAT(NOW(),'%y-%m-%d'))/
(SELECT COUNT(*) FROM ylb_account WHERE create_date = DATE_ADD(DATE_FORMAT(NOW(),'%y-%m-%d'),INTERVAL -4 DAY))
),0) four_day,
IFNULL((
(SELECT COUNT(*) FROM ylb_account WHERE create_date = DATE_ADD(DATE_FORMAT(NOW(),'%y-%m-%d'),INTERVAL -5 DAY) AND last_login >= DATE_FORMAT(NOW(),'%y-%m-%d'))/
(SELECT COUNT(*) FROM ylb_account WHERE create_date = DATE_ADD(DATE_FORMAT(NOW(),'%y-%m-%d'),INTERVAL -5 DAY))
),0) five_day,
IFNULL((
(SELECT COUNT(*) FROM ylb_account WHERE create_date = DATE_ADD(DATE_FORMAT(NOW(),'%y-%m-%d'),INTERVAL -6 DAY) AND last_login >= DATE_FORMAT(NOW(),'%y-%m-%d'))/
(SELECT COUNT(*) FROM ylb_account WHERE create_date = DATE_ADD(DATE_FORMAT(NOW(),'%y-%m-%d'),INTERVAL -6 DAY))
),0) six_day,
IFNULL((
(SELECT COUNT(*) FROM ylb_account WHERE create_date = DATE_ADD(DATE_FORMAT(NOW(),'%y-%m-%d'),INTERVAL -7 DAY) AND last_login >= DATE_FORMAT(NOW(),'%y-%m-%d'))/
(SELECT COUNT(*) FROM ylb_account WHERE create_date = DATE_ADD(DATE_FORMAT(NOW(),'%y-%m-%d'),INTERVAL -7 DAY))
),0) seven_day
結果字段數據類型爲fload, 乘100 即可轉換成百分比