【问题标题】:Joining 3 tables in Google bigquery在 Google bigquery 中加入 3 个表
【发布时间】:2012-09-08 18:33:02
【问题描述】:

下面的示例在第一个 JOIN 处停止并显示错误消息

在第 13 行第 4 列遇到“"JOIN" "JOIN ""。期待:")"

Bigquery 中的多个联接是否遗漏了一些明显的东西?

SELECT type.CourseType AS CourseType, 
       SUM(joined.assign.StudentCount) AS StudentN
FROM
  (
   SELECT assign.StateCourseCode,
          assign.StateCourseName,
          assign.MatchType, 
          assign.Term, 
          assign.StudentCount

   FROM [Assignment.AssignmentExtract5] AS assign

   JOIN SELECT wgt.Term,
               wgt.Weight 

    FROM [Crosswalk.TermWeights] AS wgt
     ON wgt.Term = assign.Term

 ) AS joined

JOIN SELECT type.CourseCode,
            type.CourseDescription, 
            type.CourseType, 
            type.CourseCategory 

FROM [Crosswalk.CourseTypeDescription] AS type
  ON joined.assign.StateCourseCode = type.CourseCode

GROUP BY CourseType

【问题讨论】:

    标签: sql google-bigquery


    【解决方案1】:

    感谢 Ryan,非常感谢您的帮助。对于任何可能感兴趣的人,这里有一个有效的查询。

    SELECT type.CourseCategory AS CourseCategory, 
           SUM(joined.assign.StudentCount) AS StudentN
        FROM
          (
           SELECT assign.StateCourseCode,
                  assign.StateCourseName,
                  assign.MatchType, 
                  assign.Term, 
                  assign.StudentCount
    
           FROM [Assignment.AssignmentExtract5] AS assign
    
           JOIN (SELECT Term,
                        Weight 
    
           FROM [Crosswalk.TermWeights]) AS wgt
           ON wgt.Term = assign.Term
    
         ) AS joined
    
        JOIN (SELECT CourseCode,
                     CourseDescription, 
                     CourseType, 
                     CourseCategory 
    
          FROM [Crosswalk.CourseTypeDescription]) AS type
        ON (joined.assign.StateCourseCode = type.CourseCode)
    
        GROUP BY CourseCategory;
    

    【讨论】:

      【解决方案2】:

      我认为您只是在第 13 行缺少一个括号。

      这个:

         JOIN SELECT wgt.Term,
                     wgt.Weight 
      
          FROM [Crosswalk.TermWeights] AS wgt
           ON wgt.Term = assign.Term
      

      应该是:

         JOIN (SELECT wgt.Term,
                     wgt.Weight 
      
          FROM [Crosswalk.TermWeights]) AS wgt
           ON wgt.Term = assign.Term
      

      更多信息: https://developers.google.com/bigquery/docs/query-reference#multiplejoinsexample

      仅供参考 - JOIN 还没有我们想要的那么快。我们正在努力提高性能。

      【讨论】:

        猜你喜欢
        • 2022-01-11
        • 2013-03-26
        • 2012-07-28
        • 1970-01-01
        • 2013-11-22
        • 1970-01-01
        • 2018-02-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多