Tôi có truy vấn này:Chuyển đổi INT nổi trong 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
Kết quả:
sms_prefix sum(sl.parts) country_name price total
==================================================================================
45 2 Denmark 0.01 0.019999999552965
63 3 Philippines 2 6
Như bạn thấy "total"
là không đúng cho Denmark
vì sum(sl.parts)=2
Multiply với 0.01
tổng nên được 0.02
.
Trường giá là FLOAT
cách tôi có thể TẮT tổng số để nổi?
Kính trọng,
Cảm ơn heximal, thành công, vui lòng xem những thay đổi ở các bài bản gốc – alkhader
đừng quên về ưu tiên phép tính số học, số tiền có ưu tiên thấp hơn nhân . (sum (sl.parts) +0.0) * cp.price sẽ chính xác hơn. – heximal
Có, tôi cần SUM xảy ra trước khi nhân – alkhader