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

关于BigQuery中TIME类型列求平均值的逻辑确认

问题:BigQuery中TIME类型列求平均值的代码逻辑确认

我在BigQuery中尝试对TIME类型的length_of_ride列求平均值时,发现AVG()函数不直接支持TIME类型,报错提示AVG仅支持INT64、FLOAT64及INTERVAL类型。之后找到一段解决方案代码:

SELECT
   AVG(length_of_ride - '0:0:0') as length_of_ride_1,

我推测这段代码是把TIME类型转换为INTERVAL类型后再求平均,想确认这个逻辑是否正确,如果不正确的话,请解释代码的实际原理。


回答

你的推测不正确,这段代码的实际逻辑是将TIME类型转换为INT64类型的微秒数后计算平均值,而非转换为INTERVAL类型。

在BigQuery中,这段代码的执行逻辑细节:

  • 字符串'0:0:0'会被隐式转换为TIME类型的00:00:00
  • 两个TIME值相减,返回结果为INT64类型的微秒数,代表当前length_of_ride与零点的时间差
  • AVG()函数对这些微秒数求平均,最终得到的length_of_ride_1是FLOAT64类型的数值,对应平均骑行时长的微秒数

如果需要将结果转回TIME类型,可以用TIME_ADD函数做转换,示例代码:

SELECT
  TIME_ADD('00:00:00', INTERVAL AVG(length_of_ride - '0:0:0') MICROSECOND) AS avg_length_of_ride

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 08:07:05