题解 | #异常的邮件概率#
异常的邮件概率
https://www.nowcoder.com/practice/d6dd656483b545159d3aa89b4c26004e
思路:1. 使用 **FROM subquery** ,让所有的筛选建立在正常用户
2. 使用 `OVER()` 窗口函数或者 `GROUP BY` 分组来经计算不同date的情况 -- OVER()
方法失败
3.使用IF或者CASE来计算
--后面时CASE时的运行代码,运行时要删掉 --
所包含的行
SELECT date, ROUND(SUM( IF(type = 'no_completed',1,0) --CASE WHEN type = 'no_completed' THEN 1 ELSE 0 END --运行的时候删掉这5,6 两行,不然会报错 )/COUNT(type),3) AS p FROM ( SELECT e.* FROM email e JOIN user us ON e.send_id = us.id JOIN user ur ON e.receive_id = ur.id WHERE us.is_blacklist = 0 AND ur.is_blacklist = 0 ) AS t GROUP BY date ORDER BY date