题解 | #牛客每个人最近的登录日期(五)#

牛客每个人最近的登录日期(五)

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

做了很久才做出来,而且效率也不高,但是还是挺欣慰的

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 17:32
点赞 评论 收藏
分享
写不来代码的小黑:这么小的城市能有做it的公司也不容易
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务