BigQuery执行SUM函数报错:STRING类型不匹配,字段应为整数的问题排查
问题分析与解决办法
错误原因
- 字段类型问题:你的
Number_of_People字段实际存储为STRING类型,而非整数。因为示例值如"3 748"包含空格(千位分隔符),这种带非数字字符的值无法被识别为INT64类型,导致SUM函数无法处理。 - 查询语法错误:原查询存在两处问题:
- 表名末尾缺少闭合的反引号(`);
- 使用
HAVING子句错误,分组聚合应使用GROUP BY,HAVING仅用于聚合后的过滤。
修正后的查询语句
SELECT District_Council_District, SUM(SAFE_CAST(REPLACE(Number_of_People, ' ', '') AS INT64)) AS Total_People FROM `absolute-vertex-356001.Opendata2.diff age male polulation distibution` GROUP BY District_Council_District
关键修正点说明
REPLACE(Number_of_People, ' ', ''):去除字符串中的空格,将"3 748"转为"3748";SAFE_CAST(...) AS INT64:将清理后的字符串安全转换为整数类型,SAFE_前缀确保遇到无效值时返回NULL而非直接报错;GROUP BY District_Council_District:按行政区分组,确保SUM计算的是每个区的总人数;- 补充了表名末尾缺失的反引号,修复语法错误。
如果字段中存在其他非数字字符(如逗号、字母等),需要在REPLACE中额外处理,但根据你提供的示例数据,仅去除空格即可解决问题。
内容的提问来源于stack exchange,提问作者AlexChui0706
相关产品推荐
相关产品推荐

