ho questo Query:Converti INT a galleggiare in 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
Risultato:
sms_prefix sum(sl.parts) country_name price total
==================================================================================
45 2 Denmark 0.01 0.019999999552965
63 3 Philippines 2 6
Come vedi il "total"
non è corretto per Denmark
perché sum(sl.parts)=2
Moltiplica con 0.01
il totale dovrebbe essere 0.02
.
Il campo di prezzo è FLOAT
in che modo è possibile eseguire il cast del totale per il float?
saluti,
Grazie heximal, Successo, vedere cambiamenti al post originale – alkhader
non dimenticare la priorità operazioni aritmetiche, somma ha priorità inferiore rispetto moltiplicazione . (sum (sl.parts) +0.0) * cp.price sarebbe più corretto. – heximal
Sì, ho bisogno che la SUM avvenga prima della moltiplicazione – alkhader