我是 SQL 新手,希望能在以下查询中获得一些帮助。
我有 3 张桌子:
- 学生(姓名,学生ID);
- 考试成绩(模块代码,学生ID,成绩);
- 项目(module_code,student_id,grade)。
我想选择学生姓名、年级和模块代码,但是有些模块既有考试又有与之相关的项目。因此,如果是这种情况,我想评分为项目和考试的平均分,否则只是考试的评分。
有任何想法吗?
我是 SQL 新手,希望能在以下查询中获得一些帮助。
我有 3 张桌子:
我想选择学生姓名、年级和模块代码,但是有些模块既有考试又有与之相关的项目。因此,如果是这种情况,我想评分为项目和考试的平均分,否则只是考试的评分。
有任何想法吗?
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