-1

我是 SQL 新手,希望能在以下查询中获得一些帮助。

我有 3 张桌子:

  • 学生(姓名,学生ID);
  • 考试成绩(模块代码,学生ID,成绩);
  • 项目(module_code,student_id,grade)。

我想选择学生姓名、年级和模块代码,但是有些模块既有考试又有与之相关的项目。因此,如果是这种情况,我想评分为项目和考试的平均分,否则只是考试的评分。

有任何想法吗?

4

1 回答 1

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
于 2013-03-12T14:08:53.813 回答