You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BigQuery查询中如何将AVG结果保留两位小数?

解决BigQuery中AVG结果保留两位小数的问题

你遇到的问题是因为单纯使用CAST()而未指定数值精度和小数位数,或者没有使用专门的舍入函数。以下是两种可靠的解决方式:

方法1:使用ROUND函数(推荐,直接舍入到指定小数位)

ROUND()函数会将计算结果四舍五入到你指定的小数位数,语法简单且直观:

SELECT Id, 
       ROUND(AVG(VeryActiveMinutes), 2) AS avg_very_active, 
       SUM(VeryActiveMinutes) AS total_very_active,
       SUM(SedentaryMinutes) AS total_sedentary
FROM `fit-mantra-410702.fitbit_data.dailyactivity`
GROUP BY Id
ORDER BY avg_very_active DESC

这里的2代表保留两位小数,结果会自动进行四舍五入(比如87.333333333333329会变成87.33)。

方法2:使用CAST指定数值精度

如果需要将结果以固定精度的数值类型存储(而非浮点型),可以用CAST()配合NUMERIC(p,s)类型,其中p是总位数,s是小数位数:

SELECT Id, 
       CAST(AVG(VeryActiveMinutes) AS NUMERIC(10,2)) AS avg_very_active, 
       SUM(VeryActiveMinutes) AS total_very_active,
       SUM(SedentaryMinutes) AS total_sedentary
FROM `fit-mantra-410702.fitbit_data.dailyactivity`
GROUP BY Id
ORDER BY avg_very_active DESC

这种方式会将结果转换为NUMERIC类型,强制保留两位小数,超出部分自动四舍五入,适合需要精准数值存储的场景。

为什么你之前的CAST尝试失败?

如果只是使用CAST(AVG(VeryActiveMinutes) AS NUMERIC)或CAST(AVG(VeryActiveMinutes) AS FLOAT64),BigQuery不会自动截断小数位——你必须明确指定小数位数(如NUMERIC(10,2)),才能得到两位小数的结果。

内容的提问来源于stack exchange,提问作者Kasey Wilson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 20:26:06