从 UX post 移出
我有 2 个查询,每个查询都汇总了..
SELECT DATE(date) AS day,
COUNT(IF(name = 'red', 1, NULL)) AS "red",
COUNT(IF(name = 'blue', 1, NULL)) AS "blue",
COUNT(IF(name = 'yellow', 1, NULL)) AS "yellow"
FROM test1
GROUP BY day with rollup
SELECT DATE(date) AS day,
COUNT(*) AS total
FROM test2
GROUP BY day with rollup
加入它们时,rollup
行被删除,因此我通过使用另一个查询计算 rollup
并将其 union
到末尾来解决它结果
这是现场演示 [sqlfiddle] ,关于我这样做的方式的任何想法(例如最佳实践或性能),是否有一种方法可以在加入后保留汇总
,我不知道。任何指示表示赞赏。
更新
我想要的正确结果集是 fiddle 中的结果。每行包含一天的摘要,来自第一个查询的项目/颜色数量和第二个查询的当天请求数量。汇总将是每个项目/颜色和请求的分类总数。希望我说清楚了:)
最佳答案
我认为“汇总”不会被删除。结果行根本不符合join
条件。你可以试试这个:
select t1.*, t2.total
from (SELECT date(date) as day, count(IF(name = 'red', 1, NULL)) AS "red",
sum(name = 'blue') AS blue,
sum(name = 'yellow') AS yellow
FROM test1
group by day with rollup
) t1 join
(select date(date) as day, count(*) as total
from test2
group by day with rollup
) t2
on t1.day = t2.day or t1.day is null and t2.day is null;
关于mysql - 加入后选择汇总,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24675168/