我是SQL的新手,希望我可以通过以下查询获得一些帮助。
我有3张桌子:
我想选择学生姓名,成绩和module_code,但是有些模块既有考试也有与之相关的项目。因此,如果是这种情况,我希望评分为项目和考试的平均分,否则只是考试成绩。
有什么想法吗?
答案 0 :(得分:1)
SELECT s.student_id, s.name, m.module_code, avg(m.grade) as grade from students s
inner join
(select module_code, student_id, grade from exam_results
union all select module_code, student_id, grade from projects) as exam_module m
on s.student_id = m.student_id
group by s.student_id, s.name, m.module_code