round(COALESCE(sum(fpd1_pri),0)/nullif(sum(fpd1_pri_fm),0),3) ERROR: function round(double precision, integer) does not exist 如何修改代码
时间: 2024-09-10 12:03:53 浏览: 121
在 SQL 中,`round()` 函数用于对数值进行四舍五入操作。错误信息表明你尝试使用 `round()` 函数对两个字段进行操作,但是根据错误消息,`round()` 函数期望的第一个参数是 `double precision` 类型,而第二个参数是 `integer` 类型。问题在于你提供给 `round()` 函数的参数类型可能与函数定义不匹配。
不过,你提供的代码片段 `round(COALESCE(sum(fpd1_pri),0)/nullif(sum(fpd1_pri_fm),0),3)` 实际上并没有直接调用 `round()` 函数,因为 `COALESCE()` 和 `nullif()` 函数的输出可能已经是 `double precision` 类型,所以错误可能是由于上下文或者其他代码部分导致的。但是,如果你确信你的 `sum()` 函数返回的是正确的类型,且你只是想要修正这部分代码,那么可以尝试将 `round()` 函数的调用与 `sum()` 函数调用分开。
下面是修改后的代码示例,确保 `round()` 函数的参数类型正确:
```sql
SELECT
round(
COALESCE(sum(fpd1_pri),0) / NULLIF(sum(fpd1_pri_fm), 0)
, 3) AS rounded_result
FROM
your_table_name;
```
这里使用了 `NULLIF()` 函数来避免除以零的情况,如果 `sum(fpd1_pri_fm)` 为零,则 `NULLIF()` 函数将返回 `NULL`,而 `COALESCE()` 函数会处理这个 `NULL` 值,确保除法操作中分母不为零。
阅读全文
相关推荐



















