题解 | #异常的邮件概率#

异常的邮件概率

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

思路:首先要筛选出正常用户,就需要合并user和email表然后用where子查询;其次就是分组计算,使用group by date;难点在于概率的计算,每天发邮件的总数很好计算,关键是怎么计算发送不成功的个数,这里采用讨论区大佬的方法:sum(case t2.type when 'completed' then 0 else 1 end)
【代码】
select t.date, round(sum(case t.type when 'completed' then 0 else 1 end) / count(t.type),3) as p
from
(select e.type, e.date from
email as e left join user as u1 on e.send_id = u1.id
left join user as u2 on e.receive_id = u2.id
where u1.is_blacklist =0 and u2.is_blacklist =0
) as t
group by t.date
order by t.date
【怎么计算发送不成功的概率】
1.round(sum(type = "no_completed") / count(), 3) as p
2.round(sum(case t2.type when 'completed' then 0 else 1 end)/count(
),3) as p

全部评论

相关推荐

星期一的大老师:项目描述 和 技术栈单开一栏;八股文:算法与数据结构,计算机网络一定要写,操作系统不了解可以不写;Linux命令,Git,Docker基础命令和基本使用一定要写,要有实际使用场景的解决经验;项目的八股文上:redis 解决 缓存雪崩,缓存击穿,缓存穿透的解决方案,一个问题的不同方案可以一起用,不需要重复在两个项目写。第二个项目换一个。小厂可以投一投
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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