with
tb as(
    select count(distinct login.user_id) as i from login
    join login as login1 on login.user_id = login1.user_id and 
        login.date = date_add(login1.date, interval 1 day)
),
tb1 as(
    select count(distinct user_id) as j from login
)
select round(tb.i / tb1.j, 3) as p from tb, tb1