2017-10-10 40 views
1

對於下面的示例,我想知道如何獲得總數(即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

回答

3

可以使用WITH ROLLUP:。

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

這將增加一個新的行總數。

+0

WITH ROLLUP是一個非常有用的查找術語,非常感謝! – urandom

1

對於跨RDBMS的通用解決方案,考慮UNION查詢,而不分組:

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

UNION ALL 

SELECT NULL, SUM(total_cost) 
FROM purchase 
0

,除非你真的需要使用group by或需要顯示所有的ID的乾淨的解決方案應該是:

select sum(total_cost) from purchase; 

這給出了輸出:3590