select 中变量赋值不成功,都是显示3.00000000000000000000

图片说明

SELECT       
     sku_p as SKU,
    'all'  AS 配送方式,     
     @tt:=sum(case when (transaction_type ='Order' and amount_type='ItemPrice' and amount_description='Principal') then 1  else 0 end) as df,
     @tt as asdf,  

其原因是浮点数的不准确本质,它们无法以准确值保存在计算机体系结构中。这里解决方法可以用mysql处理小数的函数:
round(x,d) :用于数据的四舍五入,ROUND(100.3465,2)-->100.35;
TRUNCATE(x,d):函数返回被舍去至小数点后d位的数字x,TRUNCATE(100.3465,2)-->100.34;
FORMAT(X,D):强制保留D位小数,整数部分超过三位的时候以逗号分割,并且返回的结果是string类型的,FORMAT(100.3465,2)-->100.35;
convert(value,type);类型转换,相当于截取,CONVERT(100.3465,DECIMAL(10,2))-->100.35;

select id,
    @tt:=sum(id) ,@tt 
    from clues  group by id limit 11 ;

结果如图
图片说明

显示的内容总是赋值之前的,第二行的值显示的是第一行赋的值,第三行是第二行的值
为什么出现好多3不清楚,这个内容给你参考下