1、子查询的方法(实际干活能不用就不要用)效率低
select a.date, round(sum(a.type = 'no_completed')/count(*),3) as p from email a where a.send_id in (select id from user where is_blacklist = 0) and a.receive_id in (select id from user where is_blacklist = 0) group by a.date order by a.date;
2、联结+case when
select a.date, round( sum(case when a.type = 'no_completed' then 1 else 0 end)*1.0 / count(*) , 3) from email a join user b1 on (a.send_id = b1.id and b1.is_blacklist = 0) join user b2 on (a.receive_id = b2.id and b2.is_blacklist = 0) group by a.date order by a.date;