Google bigquery 3表连接SQL大查询

Google bigquery 3表连接SQL大查询,google-bigquery,Google Bigquery,我是新加入SQL的,所以请耐心听我说,我想做的是列出每个学生每周的考试成绩。我的问题是 SELECT agg.Week, meta.Category, agg.Student, meta.Funding, agg.Test_Results, agg.Test_Points, phy.Test_Results, phy.Test_Points FROM Agriculture agg INNER JOIN metadata meta ON meta.Studen

我是新加入SQL的,所以请耐心听我说,我想做的是列出每个学生每周的考试成绩。我的问题是

SELECT
  agg.Week,
  meta.Category,
  agg.Student,
  meta.Funding,
  agg.Test_Results,
  agg.Test_Points,
  phy.Test_Results,
  phy.Test_Points
FROM Agriculture agg

INNER JOIN metadata meta
 ON meta.Student_ID = agg.Student_ID

INNER JOIN Physics phy
 ON phy.Student_ID = agg.Student_ID

WHERE agg.Week BETWEEN '1' AND '5'
对我来说,这看起来是正确的,但由于某种原因,正在发生的是测试结果和测试点一次又一次地重复,我不确定如何修复它。我重复的意思是,由于每周分数都是120分,一个学生9会得到95分,那95分会在同一个学生身上反复出现。我不确定是否需要将子查询添加到内部联接

表格如下:

元数据->类别、资金、学生ID一对多比较表

物理->测试结果、测试分数、学生ID多对多

农业->周,学生,考试结果,考试分数,学生ID多对多


同样,我是新加入的,因此如果您需要更多信息,请告诉我。

您使用学生ID加入表。如果来自农业的同一学生ID的元数据中有多个对应行,则结果集将显示重复项。 桌上物理也是如此

例如:对于一个学生ID,表农业中有10行,元数据中有2行具有相同的学生ID,如果加入表,将得到20行


您确实可以使用子查询来减少元数据和物理中每个Studen_ID的行数,并在这些子选择上进行连接

您只需对agg.Student使用DISTINCT关键字即可。

我在每个联接中创建了子查询,并修复了它!非常感谢。