bigquery:GROUP BY列表中不存在表达式'f0_'

时间:2017-12-08 17:29:43

标签: sql google-bigquery

我想计算某些字段值出现在某些纬度/经度点的实例。 Lat / Lon是字符串,所以我将它们转换为float,然后将它们舍入到1m(小数点后5位)。

netstandard2.0

作为结果,我希望每个lat / lon连接,“某个值”出现在“field”值中的次数。

我的输出应该类似于以下元组:

SELECT
  concat(ROUND(FLOAT(lat), 5),
    ROUND(FLOAT(lon), 5)),
  COUNT(field) AS fcount
FROM
  MyTable
GROUP BY
  lat,
  lon,
  fcount;

上面的查询在BigQuery中给出了 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 ... 错误。但如果我把它放入,它说:不能按汇总分组。我想在构建此查询时提供一些帮助。

1 个答案:

答案 0 :(得分:2)

为了使您的查询起作用,您应该尝试如下(看起来您使用的是BigQuery Legacy SQL - 所以下面是在旧版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