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

异常的邮件概率

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

采用简单的in判断是否正常邮件,效率不怎么好

思路:
1、找出正常邮件,id 不是 is_blacklist id;
2、正常且失败邮件,type = 'no_completed';
3、保留3位小数,round函数;
4、按照日期分组,group by date。
select 
e.date 
,round(( -- 三位小数
    select -- 正常且失败邮件数
    count(*) -- 统计行,一行一个邮件
    from email
    where send_id not in ( -- 发送者id非黑客id
        select id
        from user
        where is_blacklist = 1
    )
    and receive_id not in ( -- 接收者id非黑客id
        select id
        from user
        where is_blacklist = 1
    )
    and type = 'no_completed' -- 接收失败邮件
    and date = e.date -- **date必须是分组日期,不然会全部统计
)/(
    select 
    count(*)
    from email
    where send_id not in (-- 发送者id非黑客id
        select id
        from user
        where is_blacklist = 1
    )
    and receive_id not in (-- 接收者id非黑客id
        select id
        from user
        where is_blacklist = 1
    )
    and date = e.date -- **date必须是分组日期,不然会全部统计
),3)  p 
from email e
GROUP by date -- 按照日期分组
全部评论

相关推荐

点赞 评论 收藏
分享
06-13 10:15
门头沟学院 Java
想去夏威夷的大西瓜在...:我也是27届,但是我现在研一下了啥项目都没有呀咋办,哎,简历不知道咋写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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