【问题标题】:Cannot group by timestamp_trunc无法按 timestamp_trunc 分组
【发布时间】:2017-01-12 00:01:39
【问题描述】:

我在标准 sql 中有这个查询。

select timestamp_trunc(endTime, MONTH), count(1)
from `simple_table`
group by timestamp_trunc(endTime, MONTH);

返回以下错误:

SELECT 列表表达式引用在 [1:24] 处既不分组也不聚合的列 endTime

但是,下面的代码:

select timestamp_trunc(endTime, MONTH)
from `simple_table`
limit 10

完美运行。是否有一些关于 BigQuery 进行分组的能力的隐藏参考资料,我错过了?

【问题讨论】:

    标签: sql google-bigquery


    【解决方案1】:

    按照下面的方法做

    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 归档是“孤儿”(既不聚合也不分组)

    例如,下面将起作用(当然这不是您所需要的 - 但它证明了 group by 接受表达式)

    select count(1)
    from `simple_table`
    group by timestamp_trunc(endTime, MONTH)
    

    【讨论】:

    • 谢谢,我刚刚共同解决了这个问题。那。是。疯狂的。现在真的是 sql 2011 的 group 标准吗?
    • 在回答中添加了回复
    • 谢谢艾略特。我之前没有看到这个功能请求。所以我对这个问题的解释是正确的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-21
    • 2017-10-28
    • 2021-05-18
    • 1970-01-01
    • 2018-08-31
    • 1970-01-01
    • 2022-10-25
    相关资源
    最近更新 更多