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

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

http://www.nowcoder.com/practice/ea0c56cd700344b590182aad03cc61b8

跟前面的题目相同,首先求出新用户的数量

select l1.date,count(l2.user_id)
from login l1 left join 
(select user_id,min(date) min_date from login group by user_id) l2
on l1.user_id = l2.user_id and l1.date = l2.min_date
group by l1.date
order by l1.date

结果如图所示 alt

select l1.date,round(IFNULL(count(distinct l3.user_id)/count(distinct l2.user_id),0),3)
from login l1 left join 
(select user_id,min(date) min_date from login group by user_id) l2
on l1.user_id = l2.user_id and l1.date = l2.min_date
left join login l3 on l3.date = date_add(l2.min_date,interval 1 day) and l2.user_id = l3.user_id
group by l1.date
order by l1.date

即可求出答案,该题的坑点在于count(distinct l3.user_id),count(distinct l2.user_id)都有可能为null,所以加个ifnull是必要的

全部评论

相关推荐

2025-12-15 11:27
门头沟学院 Java
哇哇的菜鸡oc:所有人不要理会,就好了,后面他就知道怎么回事了,只能说有的时候市场都是被宰的人搞坏的
点赞 评论 收藏
分享
2025-12-14 11:43
黑龙江大学 Java
用微笑面对困难:确实比较烂,可以这么修改:加上大学的qs排名,然后大学简介要写一些,然后硕士大学加大加粗,科研经历第一句话都写上在复旦大学时,主要负责xxxx,简历左上角把学校logo写上,建议用复旦大学的简历模板
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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