我在标准sql中有这个查询。
select timestamp_trunc(endTime, MONTH), count(1)
from `simple_table`
group by timestamp_trunc(endTime, MONTH);
返回以下错误:
SELECT列表表达式引用列endTime既不在[1:24]
分组也不聚合但是,以下代码:
select timestamp_trunc(endTime, MONTH)
from `simple_table`
limit 10
完美无缺。是否存在一些关于BigQuery的功能的隐藏参考,因为我错过了?
答案 0 :(得分:3)
按以下方式执行
select timestamp_trunc(endTime, MONTH), count(1)
from `simple_table`
group by 1
或
select timestamp_trunc(endTime, MONTH) as m, count(1)
from `simple_table`
group by m
我认为发生的事情不是在GROUP BY中使用函数/表达式的问题,而是引擎无法识别SELECT列表中的字段和GROUP BY中的表达式的表达式是相同的。相反,他们被视为不同的,因此引擎思考endTime
提交的是" orphan" (既不汇总也不分组)
例如,下面将起作用(当然它不是你需要的 - 但它通过接受表达式来证明该组)
select count(1)
from `simple_table`
group by timestamp_trunc(endTime, MONTH)