# 不使用连表也能做
SELECT
date,
ROUND(IFNULL(
SUM(date=first_date AND DATEDIFF(next_date,first_date)=1) /
SUM(date=first_date),
0),3) p
FROM(
SELECT
user_id,date,
MIN(date) OVER w AS first_date,
LEAD(date) OVER w AS next_date
FROM login
WINDOW w AS (PARTITION BY user_id ORDER BY date)
) t
GROUP BY date
ORDER BY date

京公网安备 11010502036488号