gpt4 book ai didi

mysql - 从 SQL 数学运算中获取不正确的值?

转载 作者:行者123 更新时间:2023-11-29 12:35:01 26 4
gpt4 key购买 nike

我正在执行一项运算来计算基于 2 个值的百分比。

我有一个表可以跟踪月份和年份的总体值(value)。

表名称 - donation_tracker

enter image description here

我正在比较当前和去年的所有月份,然后执行计算,例如:

当前值(月 - 2014 年 1 月,年份 - 2014 年,城市 ID - 1)/先前值(月 - 1 月,年份 - 2013 年,城市 ID - 1)= 分区值 * 100 = 新百分比值。

有些数学运算看起来是正确的,但有些则不正确,例如下图显示的是 140,而实际上应该是 130。

enter image description here

我查询的值如下: 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

谢谢。

最佳答案

您无需在此处计算金额:

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 )

关于mysql - 从 SQL 数学运算中获取不正确的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26914966/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com