#有没有更好的解法??
#这个方法比较直观,先去重, 开窗找到用户是哪天第一次登录,那一日就是新用户,然后关联该用户在下一日登录的记录
#排行前几个怎么写的那么复杂??
with tmp1 as (
select user_id , date
from login
group by user_id ,date
)
select date , round(ifnull(count(case when rn =1 then uid end)/
count(case when rn =1 then user_id end) ,0),3)
as ratio
from (
select t1.user_id , t1.date , rn , t2.user_id as uid
from (
select user_id , date , row_number()over(partition by user_id order by date) as rn
from tmp1
) t1 left join
tmp1 t2 on t1.user_id = t2.user_id and t2.date = date_add(t1.date, INTERVAL 1 day)
and t1.rn =1
)t
group by date