使用BIGDATA Cititrips编写SQL查询报错,请求修正与解释
Citibike SQL查询错误修正及原因解释
修正后的SQL代码
SELECT CONCAT(start_station_name, ' to ', end_station_name) AS route, usertype, COUNT(*) AS num_trips, ROUND(AVG(CAST(tripduration AS INT64)/60), 2) AS duration 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
错误原因及修正说明
- ROUND函数语法错误:原代码中
Round(Avg(cast(tripduration as int64)/60).2)使用.分隔参数,BigQuery的ROUND函数要求用逗号分隔计算表达式和保留小数位数,正确写法为ROUND(AVG(CAST(tripduration AS INT64)/60), 2)。 - 类型声明位置错误:原代码将
Float64直接放在ROUND函数后,不符合SQL语法规范。实际上ROUND函数返回的结果本身就是FLOAT64类型,无需额外声明;若确实需要强制指定类型,应使用CAST(ROUND(...) AS FLOAT64)包裹整个表达式。 - 可选格式优化:原CONCAT拼接的
'to'前后无空格,生成的route会是类似"StationAtoStationB"的紧凑格式,改为' to '后路由可读性更强。
内容的提问来源于stack exchange,提问作者Qammer Shahzad
相关产品推荐
相关产品推荐

