【问题标题】:PostgreSQL math operationsPostgreSQL 数学运算
【发布时间】:2018-08-13 17:37:15
【问题描述】:

我有一个简单的查询

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

结果,我看到 0. for bca_total_lean/bca_total_fat 结果没问题。由 bca_total_meta 为 0。

所有字段都是整数,所有结果都大于0。在PHP中对这个数据进行同样的操作返回83。 我也试过没有圆形功能。同样的结果。 BD 分离数据返回

  • 元:77391
  • 脂肪:11892
  • 精益:74362

任何提示哪里出错了?

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的解释。
    【解决方案2】:

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

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

    【讨论】:

    • 它有效,谢谢。让我理解为什么我的示例不起作用。
    • @jaroApp 。 . . “整数除法”的某些部分你不明白吗?
    【解决方案3】:

    试试:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-04
      • 2017-03-22
      相关资源
      最近更新 更多