如何解决BigQuery报错Expected "(" but got identifier "tripduration"
BigQuery SQL报错修复方案
报错信息:Expected "(" but got identifier "tripduration" at [4:16]
错误原因
报错指向SQL第4行第16位,核心问题是CAST函数语法不符合BigQuery规范,标准CAST语法要求待转换字段必须放在括号内,同时你代码中ROUND、AVG的嵌套参数括号也存在错位问题。
修正后可运行代码
SELECT usertype, CONCAT(start_station_name,"to",end_station_name) AS route, COUNT(*) AS num_trips, ROUND(AVG(CAST(tripduration AS int64)/60),2) AS Newduration FROM `bigquery-public-data.new_york_citibike.citibike_trips` GROUP BY start_station_name,end_station_name,usertype ORDER BY num_trips DESC LIMIT 10
主要修改点
- 为
CAST函数补充括号,正确写法为CAST(tripduration AS int64),解决触发报错的语法问题 - 调整函数嵌套逻辑:先将tripduration转换为int64类型后再除以60计算分钟数,将精度参数
2调整为ROUND的第二个入参,修正原代码中参数错位的问题 - 可选优化:给
CONCAT生成的路线字段添加别名route,避免查询结果出现无意义的默认列名
内容的提问来源于stack exchange,提问作者Rajesh Tekchandani
相关产品推荐
相关产品推荐

