SQL練習題41:牛客每天有很多人登錄,請你統計一下牛客新登錄用戶的次日成功的留存率


題目:(具體題目細節去看牛客,不能插入圖片)

牛客每天有很多人登錄,請你統計一下牛客新登錄用戶的次日成功的留存率,
有一個登錄(login)記錄表,簡況如下:

第1行表示id為2的用戶在2020-10-12使用了客戶端id為1的設備第一次新登錄了牛客網
。。。

第4行表示id為3的用戶在2020-10-12使用了客戶端id為2的設備登錄了牛客網
。。。
最后1行表示id為1的用戶在2020-10-14使用了客戶端id為2的設備登錄了牛客網



請你寫出一個sql語句查詢新登錄用戶次日成功的留存率,即第1天登陸之后,第2天再次登陸的概率,保存小數點后面3位(3位之后的四舍五入),上面的例子查詢結果如下:

查詢結果表明:
id為1的用戶在2020-10-12第一次新登錄了,在2020-10-13又登錄了,算是成功的留存

id為2的用戶在2020-10-12第一次新登錄了,在2020-10-13又登錄了,算是成功的留存

id為3的用戶在2020-10-12第一次新登錄了,在2020-10-13沒登錄了,算是失敗的留存
id為4的用戶在2020-10-13第一次新登錄了,在2020-10-14沒登錄了,算是失敗的留存

固次日成功的留存率為 2/4=0.5
(sqlite里查找某一天的后一天的用法是:date(yyyy-mm-dd, '+1 day'),四舍五入的函數為round,sqlite 1/2得到的不是0.5,得到的是0,只有1*1.0/2才會得到0.5)

代碼:

SELECT ROUND(COUNT(l1.user_id) * 1.0 / COUNT(l2.user_id), 3) AS p
FROM
(SELECT user_id, min(date) AS date
FROM login
GROUP BY user_id) AS l2
LEFT JOIN login AS l1
ON l1.user_id = l2.user_id
AND l1.date = date(l2.date,'+1 day');

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM