题解 | #牛客每个人最近的登录日期(五)#
牛客每个人最近的登录日期(五)
http://www.nowcoder.com/practice/ea0c56cd700344b590182aad03cc61b8
SELECT ll.date,IFNULL(ROUND(tem.zi_count/ll.mu_count,3),0) AS p
FROM
((SELECT l.date,SUM(IF(l.user_id NOT IN(SELECT DISTINCT user_id FROM login
WHERE date<l.date),1,0)) AS mu_count -- 这里目的是求新用户的,这里卡了很久,我太菜了
FROM login l
GROUP BY date) ll -- 这里求出分母
LEFT JOIN
(SELECT a.date,COUNT(*) AS zi_count
FROM login a
JOIN login b ON a.user_id = b.user_id AND DAY(b.date) - DAY(a.date)=1
GROUP BY a.date) tem
ON tem.date = ll.date) -- 这里是求出分子
ORDER BY ll.date 做了很久才做出来,而且效率也不高,但是还是挺欣慰的

