是否可以在 PostgreSQL 中的 Float 中获得最多 3 个小数位?

时间:2021-07-14 10:53:00

标签: sql postgresql average

我在 PostgreSQL 中有一个表,它有一个 Float 列。在我的选择中,我在该列上使用 AVG(),因此它通常会给出一个带有许多小数的数字。有什么方法可以将小数位数限制为最多 3,这意味着可以少于但不超过 3。

这是查询:

SELECT team, AVG(score) FROM team_score_table GROUP BY team

2 个答案:

答案 0 :(得分:0)

您可以使用round()

select round(val::numeric, 3)

您也可以转换为数字,但您需要适合您的值的精度:

select val::numeric(20, 3)

我实际上更喜欢显式 cast(),因为它将列的数据类型设置为具有显式比例的 numeric - 因此下游应用程序知道结果中的小数位数.

round() 返回一个 numeric 值,但它是一个“通用”数字,没有指定的小数位数和精度。

您可以在 this example 中看到差异。

答案 1 :(得分:0)

您可以使用多个函数来做到这一点:

SELECT round(42.43666, 2) -- 42.44

SELECT trunc(42.43666, 2) -- 42.43

或演员表:

SELECT cast(42.43666 as numeric(20, 2)) -- 42.44

根据你的例子应该是:

SELECT team, round(AVG(score)::numeric, 2) FROM team_score_table GROUP BY team

SELECT team, trunc(AVG(score)::numeric, 2) FROM team_score_table GROUP BY team

SELECT team, cast(AVG(score) as numeric(20,2)) FROM team_score_table GROUP BY team
相关问题