表使用由group创建的列中的列的总和由

表使用由group创建的列中的列的总和由

问题描述:

对于下面的示例,我想知道如何获得总数(即SUM(total_cost)中所有行的总和。容易,但我一直在努力,现在相当一段时间,现在还在坚持任何帮助将不胜感激,我对这个问题的“noobishness”道歉表使用由group创建的列中的列的总和由

SELECT cate_id,SUM(total_cost) 
FROM purchase    
GROUP BY cate_id; 

+---------+-----------------+ 
| cate_id | SUM(total_cost) | 
+---------+-----------------+ 
| CA001 |   1725.00 | 
| CA002 |   965.00 | 
| CA003 |   900.00 | 
+---------+-----------------+ 
+0

你在找这样的事吗? | CA001 | 3590.00 | | CA002 | 3590.00 | | CA003 | 3590.00 | 然后检查此问题,类似的问题 https://stackoverflow.com/questions/11357640/using-sum-without-grouping-the-results – Valli

可以使用WITH ROLLUP:。

SELECT cate_id, SUM(total_cost) 
FROM purchase    
GROUP BY cate_id WITH ROLLUP; 

这将增加一个新的行总数。

+0

WITH ROLLUP是一个非常有用的查找术语,非常感谢! – urandom

对于跨RDBMS的通用解决方案,考虑UNION查询,而不分组:

SELECT cate_id, SUM(total_cost) 
FROM purchase    
GROUP BY cate_id 

UNION ALL 

SELECT NULL, SUM(total_cost) 
FROM purchase 

,除非你真的需要使用group by或需要显示所有的ID的干净的解决方案应该是:

select sum(total_cost) from purchase; 

这给出了输出:3590