2013-07-16 90 views
-3

我尝试按组计算总和并计算每个组占多少%。这是很容易使用GROUP BYSUMIF但后来我被困在SUM (ALL) - 我想我可以尝试做SUM(CASE IF GROUP='A' THEN END) + SUM(CASE IF GROUP='B'...但随后WHATIF有更多GROUP :(在SQL中执行百分比计算

SELECT GROUP, SUM(SALES), SUM(SALES)/TOTAL FROM DATABASE.SALETABLE

enter image description here

回答

3

您可以使用SUM ... OVER()以获得总销售额。

SELECT [Group], 
     SUM(SALES) AS [Sales], 
     100.0 * SUM(SALES)/SUM(SUM(SALES)) OVER() AS [%] 
FROM YourTable 
GROUP BY [Group] 

SQL Fiddle

+0

我想通了 - 使用'SUM(SALES)/(SELECT SUM(SALES)' – user2103670

+0

感谢,它不允许我马上就是为什么接受的解决方案 – user2103670