WITH user_next AS ( SELECT user_id, date, row_number() over (partition by user_id order by date) AS rk, lead(date) over (partition by user_id order by date) AS next_date FROM (select DISTINCT user_id,date FROM login) t),retention_date AS ( select date, ROUND(SUM(CASE when DATEDIFF(next_date, date)=1...