我的一列process_size
在800089856
中拥有一个值bytes
。
我的SQL查询说
select ((process_size*11/(1024*1024*1024))*100)/(4*3600) as Avg_wk_sum from instances where wk_id = 2
但是显示浮点数0
而不是浮点数。
我什至尝试了显式投射
select ((process_size*11/(1024*1024*1024))*100)/(4*3600) :: float as Avg_wk_sum from instances where wk_id = 2
我在做什么错?如何获取浮点值?
答案 0 :(得分:3)
语句中的所有值都是整数,因此实际的除法/乘法是使用整数-产生0。然后将结果(0
)强制转换为浮点型不会改变任何东西。
您应将process_size
强制转换为浮点数,然后使用浮点数执行所有后续操作。
select ((process_size::float*11/(1024*1024*1024))*100)/(4*3600)
但是,如果您关心精确的结果,则应远离近似数据类型(例如float),而应使用numeric
。