题解 | #异常的邮件概率#
异常的邮件概率
http://www.nowcoder.com/practice/d6dd656483b545159d3aa89b4c26004e
-- 1.排除所有黑名单用户(1.不在用户表的用户,2.在黑名单列中=1的黑名单用户) -- 2.计算邮件失败率(转化:成功邮件=0,失败邮件=1) -- 成功率=avg(失败邮件)
SELECT
e.date,
round(
avg(
case e.type
when "completed" then 0
else 1
end
)-- 内层函数用于转化文本到数值方便聚合函数avg 求平均值(邮件发送的失败率,邮件成功=0,邮件失败=1)
,3)-- 外层函数用于保留到小数点后面3位
from email e
join user u1 on e.send_id=u1.id and u1.is_blacklist=0 -- 发件人不在黑名单
join user u2 on e.receive_id=u2.id and u2.is_blacklist=0 -- 收件人不在黑名单
GROUP by e.date
order by e.date