【问题标题】:Group by on select not working分组按选择不起作用
【发布时间】:2014-12-26 13:40:46
【问题描述】:

我有两个表,我的外部选择聚合了我放在 where 子句中的另一个表中存在的所有那些 id。这两个表都是使用通配符功能生成的。以下是查询-

SELECT count(id), timestamp  FROM (TABLE_QUERY(dataset1, 'expr'))  
WHERE id IN (SELECT id FROM (TABLE_QUERY(dataset1, 'expr')) 
WHERE timestamp < 1414670361836)  ) group by timestamp

我收到以下错误 -

Query Failed Error: (L1:56): JOIN (包括 semi-join) and UNION ALL (逗号)不能组合在单个 SELECT 语句中。要么动 UNION ALL 到内部查询或 JOIN 到外部查询。

谁能指出问题出在哪里,我该如何解决。

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    使用处理公共数据的查询重新措辞。

    这不起作用:

    SELECT COUNT(actor), created_at
    FROM (TABLE_QUERY([publicdata:samples], "table_id CONTAINS 'github'"))
    WHERE actor IN (
      SELECT actor
      FROM (TABLE_QUERY([publicdata:samples], "table_id CONTAINS 'github'"))
      WHERE created_at > '')  
    GROUP BY created_at
    
    Error: (L2:1): JOIN (including semi-join) and UNION ALL (comma) may not be combined in a single SELECT statement. Either move the UNION ALL to an inner query or the JOIN to an outer query.
    

    这样做:

    SELECT COUNT(actor), created_at
    FROM (
      SELECT actor, created_at
      FROM (TABLE_QUERY([publicdata:samples], "table_id CONTAINS 'github'"))
    )
    WHERE actor IN (
      SELECT actor
      FROM (TABLE_QUERY([publicdata:samples], "table_id CONTAINS 'github'"))
      WHERE created_at > ''
      LIMIT 100)  
    GROUP BY created_at
    

    我刚搬了

      SELECT actor, created_at
      FROM (TABLE_QUERY([publicdata:samples], "table_id CONTAINS 'github'"))
    

    到一个内部查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-31
      • 2017-02-08
      • 2012-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多