2011-09-05 19 views
0

我試圖使用SUM()來計算百分比以收集總計。SQL:如何使用SUMS計算百分比()

CONVERT(decimal(10,2), SUM(cola)/(SUM(cola)+SUM(colb))) 

我檢查了SUM(可樂)= 3和SUM(colb)= 2;所以我期待它像計算...

3/5 = .6;所以,我希望能得到恢復,0.60,

下面是完整的查詢:

SELECT CASE WHEN this < 0 THEN '-' 
       ELSE '+' END AS 'Col1', 
       SUM(cola) as 'this', SUM(colb) as 'that', 
       CONVERT(decimal(10,2), SUM(cola)/(SUM(cola)+SUM(colb)) as 'PCT' 
    FROM Table1 
    WHERE colc = 'Condition' 
GROUP BY CASE WHEN this < 0 THEN '-' 
       ELSE '+' END 
+1

我建議你閱讀[Integer Division](http://www.peterbe.com/Integer-division-in-programming-languages)。您至少需要一個操作數纔是浮點類型。 – Oded

+0

@davomcd:看看這裏http://stackoverflow.com/q/1763989/247184的想法。 – VoodooChild

+0

@Oded謝謝!我不敢相信我忽略了這一點。 – daveomcd

回答

2

你在做Integer division

如果需要浮點結果,至少需要一個操作數爲浮點類型。

0

感謝@Oded,(忘了轉換整數十進制)所以,這是我改變了... ...

SELECT CASE WHEN this < 0 THEN '-' 
       ELSE '+' END AS 'Col1', 
       SUM(cola) as 'this', SUM(colb) as 'that', 
       CONVERT(decimal(10,2), SUM(cola)/(CONVERT(decimal(10,2), 
       SUM(cola))+CONVERT(decimal(10,2), SUM(colb))) as 'PCT' 
    FROM Table1 
    WHERE colc = 'Condition' 
GROUP BY CASE WHEN this < 0 THEN '-' 
       ELSE '+' END