bigquery:GROUP BY 列表中不存在表达式“f0_”
Posted
技术标签:
【中文标题】bigquery:GROUP BY 列表中不存在表达式“f0_”【英文标题】:bigquery: Expression 'f0_' is not present in the GROUP BY list 【发布时间】:2017-12-08 17:29:43 【问题描述】:我想计算出现在某个纬度/经度点的某些字段值的实例。 Lat/Lon 是字符串,所以我将它们转换为浮点数,然后将它们四舍五入到 1m(小数点后 5 位)。
SELECT
concat(ROUND(FLOAT(lat), 5),
ROUND(FLOAT(lon), 5)),
COUNT(field) AS fcount
FROM
MyTable
GROUP BY
lat,
lon,
fcount;
作为结果,我希望每个纬度/经度连接的某个值出现在“字段”的值中的次数。
我的输出应该类似于以下元组:
lat lon field fcount
12.34 12.38 A 23
12.34 12.38 B 11
12.34 12.38 C 23
11.34 12.38 A 15
...
上面的查询在 BigQuery 中给我一个 Expression 'f0_' is not present in the GROUP BY list
错误。但如果我把它放进去,它会说:不能按聚合分组。我需要一些帮助来构建这个查询。
【问题讨论】:
【参考方案1】:为了让您的查询正常工作,您应该尝试如下方式(看起来您使用 BigQuery Legacy SQL - 所以下面是 Legacy SQL)
#legacySQL
SELECT
CONCAT(STRING(ROUND(FLOAT(lat), 5)),
STRING(ROUND(FLOAT(lon), 5))) as latlong,
COUNT(field) AS fcount
FROM
MyTable
GROUP BY 1
当然,它绝不会返回您所说的您希望查询返回的内容
为此,您应该在下面尝试
#legacySQL
SELECT
ROUND(FLOAT(lat), 5) lat,
ROUND(FLOAT(lon), 5) lon,
field,
COUNT(field) AS fcount
FROM
MyTable
GROUP BY 1, 2, 3
【讨论】:
以上是关于bigquery:GROUP BY 列表中不存在表达式“f0_”的主要内容,如果未能解决你的问题,请参考以下文章
google bigquery SQL group by 聚合函数
BigQuery 对两列使用 Group By 函数,顺序无关紧要
关于ORA-00979 不是 GROUP BY 表达式错误的解释
BigQuery GROUP BY/GROUP EACH BY 资源超出错误,但查询不包含 GROUP BY 运算符