思路:问题关键点在于怎么求出次日,及成功率
-
求出次日的方法已经在题目中给出了,即DATE_ADD(yyyy-mm-dd,INTERVAL 1 DAY)
-
求用户第一次登录的方法是使用min(date),然后结合DATA_ADD函数求出用户次日登录的结果。
select user_id, DATE_ADD(min(date), INTERVAL 1 DAY)
from login
group by user_id
- 最后将次日登录的用户/总用户即可得出结果 求总用户很简单,可以使用distinct或group by都可以,这里使用 distinct
select count(distinct user_id) from login
- 完整代码如下(MySQL):
select round(count(distinct user_id) / (select count(distinct user_id) from login), 3)
from login
where (user_id, date) in (select user_id, DATE_ADD(min(date),INTERVAL 1 DAY)
from login
group by user_id)
- sqlite 方法:
select
round(count(distinct user_id) * 1.0 / (select count(distinct user_id) from login) ,3)
from login
where (user_id,date)
in (select user_id,date(min(date),'+1 day') from login group by user_id);



京公网安备 11010502036488号