PostgreSQL数学运算

时间:2018-08-13 17:37:16

标签: sql postgresql

我有一个简单的查询

select round((bca_total_lean/(bca_total_meta + bca_total_fat))*100,0) as lean_mass_percent from x where...

结果是,我看到0。对于bca_total_lean/bca_total_fat,结果还可以。 bca_total_meta等于0。

所有字段均为整数,并且所有结果均大于0。PHP中此数据中的相同操作返回83。 我也尝试了没有舍入功能。相同的结果。 BD返回的单独数据

  • 元:77391
  • 脂肪:11892
  • lean:74362

任何提示哪里有错误?

3 个答案:

答案 0 :(得分:3)

整数除法会截断小数位。您的表达式返回0到1之间的比率,该比率始终被截断为0。

要获得“百分比”,请先乘以100。

select round((bca_total_lean*100)/(bca_total_meta + bca_total_fat),0) as lean_mass_percent from x where...

答案 1 :(得分:2)

Postgres执行整数除法。因此,我将其表示为:

select round(bca_total_lean * 100.0 / (bca_total_meta + bca_total_fat), 0) as lean_mass_percent
from x
where . . .

答案 2 :(得分:0)

尝试:

select round((bca_total_lean::numeric/(bca_total_meta::numeric + bca_total_fat::numeric))*100,0) as lean_mass_percent
from x where...