2014-11-13 36 views
0

我正在執行一個操作來計算基於2個值的百分比。從SQL數學運算中獲取不正確的值?

我有一張表跟蹤月份和年份的總體價值。

表名稱 - donation_tracker

enter image description here

我在所有個月跨越比較當前和前一年再進行計算,如:

當前值(月 - 月,年 - 2014,CityID-1)/之前的值(月 - 1月,2013年,CityID-1)=部門值* 100 =新的百分比值。

一些數學運算的似乎是正確的,但有些是不正確的,例如下面的圖像顯示140時,它應該是130

enter image description here

我quering值如下: enter image description here

列donation_amount設定爲

類型=十進制

長度= 10,2。

總和應該是130 ...

SQL代碼 -

SELECT city_markers.City_ID, city_markers.City_Name, city_markers.City_Lng, city_markers.City_Lat, SUM(d2.Donation_Amount) , d1.Month, d1.Year, round((
D2.Donation_amount/D1.Donation_amount 
) *100, 2) 
FROM `city_markers` 
INNER JOIN donation_tracker d1 ON city_markers.City_ID = d1.City_ID 
INNER JOIN donation_tracker D2 ON d1.month = D2.month 
AND d1.month = 'January' 
AND d2.month = 'January' 
AND d2.year = '2014' 
AND D1.year = D2.year -1 
AND D1.Location_ID = D2.Location_ID 
GROUP BY city_markers.City_ID 

謝謝。

回答

1

你不要在這裏總結一下金額:

round((D2.Donation_amount/D1.Donation_amount) *100, 2) 

所以結果是每個第一行的值來計算:

round((70/50) *100, 2) ==> 140 

使用SUM()來獲得想要的結果:

round((sum(D2.Donation_amount)/sum(D1.Donation_amount)) *100, 2) 
+0

謝謝,真的幫助我。 –