不是求首日的还算简单。
SELECT visit_date,
COUNT(DISTINCT ID) dau,
COUNT(SEC)/COUNT(DISTINCT ID) next_day_per
FROM (
SELECT u1.id,u1.visit_date,u2.visit_date sec 
FROM user_visit_log u1
LEFT JOIN user_visit_log u2
ON u1.id=u2.id and datediff(u2.visit_date,u1.visit_date) = 1 ) A
GROUP BY visit_date