-- 首先找到正常用户,然后根据日期分组,最后用sum(IF)去求失败概率
WITH white_user AS(
    SELECT DISTINCT id
    FROM user
    WHERE is_blacklist = '0'
)

SELECT 
    date,
    ROUND(SUM(IF(type = 'no_completed',1,0))/COUNT(*),3) p
FROM email
WHERE send_id IN(
    SELECT id
    FROM white_user
)
AND receive_id IN(
    SELECT id
    FROM white_user
)
GROUP BY date