sql - 为什么我的 float 在postgreSQL中显示为0

标签 sql postgresql

我的列之一 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。然后将结果 (0) 转换为一个不会改变任何东西的 float 。

您应该将process_size 转换为 float ,然后所有后续操作都使用 float 进行。

select ((process_size::float*11/(1024*1024*1024))*100)/(4*3600)

但是,如果您关心精确的结果,则应远离 float 等近似数据类型,而应使用 numeric

关于sql - 为什么我的 float 在postgreSQL中显示为0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52252679/

相关文章:

php - 在没有设置 Laravel 数据库时返回插入 ID

ruby-on-rails - 如何将分解为数据库的模型构建为 36 个表?

mysql - 有条件地选择表格的某些部分

PHP 选择日期时间和文本

arrays - 从 postgresql 函数返回 BIGINT[]

预定义值的 SQL 结果表

mysql - 将 MySQL 查询转换为 PostgreSQL

sql - 如何在存储过程的t-sql动态语句中使用LIKE?

sql - 为具有最低值的每个组选择单个 ID

php - Mysql max函数及具体值