请问在mysql中,如何创建视图并提供每位学生的考试成绩最高的选课信息?

这个是题目

img

下面是题目中需要查询的三个数据表

img

img

    ->create view score_group_view
    -> as
    -> select student.学号,姓名,course.课程号,课程名,平时成绩*平时成绩比重+考试成绩*(1-平时成绩比重) 总成绩
    -> from stu_grade
    -> inner join student 
    -> on student.学号=stu_grade.学号
    -> inner join course
    -> on course.课程号=stu_grade.课程号

我最多写到这里,我实在想不到怎么实现。

。。没实际表也不好验证,只能写个大概了。。
关键在于要求每个同学的最高选课总成绩,
所以在成绩表那里要找到每个学号最高总成绩的一门课,这里用inner join最为合适
剩下的就不用多说了。感觉找最高的应该有更简单的办法,太久没写SQL了。

  select a.学号,a.姓名,b.course.课程号
     ,c.课程名
     ,b.平时成绩*b.平时成绩比重+b.考试成绩*(1-b.平时成绩比重) as 总成绩
   from student a 
   left join  
    (select *
    ,平时成绩*平时成绩比重+考试成绩*(1-b.平时成绩比重) as 总成绩 
    from 
    stu_grade)
        b on a.学号 = b.学号
     inner join 
     (select 学号,max(平时成绩*平时成绩比重+考试成绩*(1-平时成绩比重)) from 
     stu_grade 
    group by 学号    ) d
  on b.学号=d.学号 and b.总成绩 = d.总成绩
    left join course c 
    on b.course.课程号=c.课程号