我正在使用取整功能对数字进行取整。这是一个工作示例:
select round(3.0/5,1);
我有一个名为“ ratings”的表,其中除其他外还包含一个名为“ rank”的列。
这是示例命令及其输出:
=> select rank from ratings limit 5;
rank
------
8.6
8.3
7.7
7
7.9
(5 rows)
我想要平均排名,所以我做了以下事情:
=> select avg(rank) from ratings;
avg
------------------
6.93997624861447
(1 row)
我想舍入这个结果,所以我做了以下事情:
=> select round(avg(rank)) from ratings;
round
-------
7
(1 row)
但是我想保留第一个小数位,所以我尝试了这个:
=> select round(avg(rank),1) from ratings;
ERROR: function round(double precision, integer) does not exist
LINE 1: select round(avg(rank),1) from ratings;
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
我发现这样做确实非常奇怪,因为我已经测试过round(float,int)并且可以工作(请参见第一个示例)。当没有传递第二个参数时,round也似乎起作用。
请解释我在做什么错,以便我可以解决。谢谢
答案 0 :(得分:1)
ROUND
似乎适用于确切的数字类型,因此您可以尝试将平均值转换为数字:
select round(cast(avg(rank) as numeric), 1) from ratings
您使用的ROUND
版本需要数字输入,请选中documentation。