错误写法如下,在最终查询的表里边又加入了(子查询后的分组表),

这样等同于在一个聚合函数的表进行筛选,所以就只有一条数据

SELECT r.date, r.type, count(type) AS d, round(sum(r.type = "no_completed") / count(type), 3) AS p

FROM (select * FROM email AS e

WHERE e.send_id IN (SELECT id FROM user AS u1 WHERE u1.is_blacklist = 0)

AND e.receive_id IN (SELECT id FROM user AS u2 WHERE u2.is_blacklist = 0)

GROUP BY e.date ORDER BY e.date) AS r

正确写法:

SELECT date, round(sum(type = "no_completed") / count(type), 3) AS p FROM email AS e WHERE e.send_id IN (SELECT id FROM user AS u1 WHERE u1.is_blacklist = 0) AND e.receive_id IN (SELECT id FROM user AS u2 WHERE u2.is_blacklist = 0) GROUP BY e.date ORDER BY e.date