题目
-
题目描述
写出一个sql语句查询每个日期新用户的次日留存率,结果保留小数点后面3位数(3位之后的四舍五入),并且查询结果按照日期升序排序 -
一张表

-
所需结果

题解
思路:
这题没有头绪
有一个参考解法:

SELECT a.date,
ifnull(round(count(IF(rnk = 1, l.date, null))/count(IF(rnk = 1, a.date, null)), 3), 0)
FROM
(
SELECT user_id, date,
ROW_NUMBER() OVER(PARTITION BY user_id order BY date ) rnk
FROM login
)a
LEFT JOIN login l ON a.user_id = l.user_id
AND DATEDIFF(l.date, a.date) = 1
group by a.date
5710

被折叠的 条评论
为什么被折叠?



