2016-08-08 27 views
2

我覺得這很愚蠢 - 這可能是我忘記的數學規則。TSQL - 你計算的值然後求和,或先求和再計算值?

我想基於淨銷售額,成本和billbacks計算毛利。

我得到兩個不同的值基於我怎麼做計算:

(sum(netsales) - sum(cost)) + sum(billbackdollars) as CalculateOutsideSum, 
sum((netsales - cost) + BillBackDollars) as CalculateWithinSum 

這是度過了一個基本的交易事實表的。

在這個特殊的例子,也有被總結90條記錄,我得到下面的結果

CalculateOutsideSum: 234.77 
CalculateWithinSum: 247.70 

我想像這將是某種形式的傳遞性和兩個結果將是相同的考慮,它只是總和。

哪種方法是正確的?

+0

兩種方法應該給予同樣的結果,出了問題的地方 - 四捨五入問題,數據變化,選擇方法改變 - 但數學推理是正確的,他們是平等的 – Cato

+0

感謝您確認。 – IronicMuffin

回答

0

就想通了......

問題是淨銷售額爲空3行,導致計算變得無效,並錯誤地總結。添加完isnull後,兩個數字都是一樣的。

1

從數學的角度來看,你應該得到確切既您的公式相同的值。

反正在此情況下,最好的任何計算後進行總和。

編輯時,開瓶器迴應:

而且對待你與ISNULL功能或其他鑄造功能,提高了數據精度的數據。

舍入,格式化和鑄件這降低數據精度應該求和之後施加。