Google bigquery 3表连接SQL大查询
我是新加入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
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关键字即可。我在每个联接中创建了子查询,并修复了它!非常感谢。