问题的核心在其他地方。PostgreSQL 对整数和 bigint 数使用长除法(当除法的两个部分都是 int、bigint 值时)。所以结果pools.available_capacity_in_kb/1024/1024/1024*100)/100
是 bigint。可能这不是您所期望的。
postgres=# \df round
List of functions
+------------+-------+------------------+---------------------+------+
| Schema | Name | Result data type | Argument data types | Type |
+------------+-------+------------------+---------------------+------+
| pg_catalog | round | double precision | double precision | func |
| pg_catalog | round | numeric | numeric | func |
| pg_catalog | round | numeric | numeric, integer | func |
+------------+-------+------------------+---------------------+------+
(3 rows)
没有任何round
功能bigint
(因为它没有任何意义)。请尝试使用浮点除法来修复它
pools.available_capacity_in_kb/1024/1024/1024*100)/100.0
现在,结果将是numeric
,并且该函数round(numeric, int)
存在 - 所以它应该可以工作。