我在 PostgreSQL 中有一个表,它有一个 Float 列。在我的选择中,我在该列上使用 AVG(),因此它通常会给出一个带有许多小数的数字。有什么方法可以将小数位数限制为最多 3,这意味着可以少于但不超过 3。
这是查询:
SELECT team, AVG(score) FROM team_score_table GROUP BY team
答案 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