FLOAT我有这个疑问:转换int在SQL
SELECT sl.sms_prefix, sum(sl.parts) , cp.country_name, CAST(SUM(sl.parts) AS NUMERIC(10,4)) * CAST(cp.price AS NUMERIC(10,4))
FROM sms_log sl, sms_transaction st, country_prefix cp
WHERE st.customer_id =1
AND st.sendtime >=1329865200
AND st.sendtime <=1330037999
AND st.sms_trans_id = sl.trans_id
AND sl.sms_prefix = cp.prefix
AND st.customer_id = cp.customer_id
GROUP BY sl.sms_prefix
LIMIT 0 , 30
结果:
sms_prefix sum(sl.parts) country_name price total
==================================================================================
45 2 Denmark 0.01 0.019999999552965
63 3 Philippines 2 6
正如你所看到的"total"
是不正确的Denmark
因为sum(sl.parts)=2
乘以0.01
总应该是0.02
。
价格区域是FLOAT
我如何才能将总数浮动?
问候,
感谢heximal,成功,请参阅在原来的岗位 – alkhader 2012-02-23 10:05:02
变化不会忘记算术运算优先级,总和比乘低优先级。 (sum(sl.parts)+0.0)* cp.price会更准确。 – heximal 2012-02-23 10:13:46
是的,我需要在乘法之前发生SUM – alkhader 2012-02-23 10:16:26