2301_77162650 2023-04-28 17:47 采纳率: 0%
浏览 95

请问在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.课程号

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

  • 写回答

2条回答 默认 最新

  • Dick_不周 2023-04-28 18:27
    关注

    。。没实际表也不好验证,只能写个大概了。。
    关键在于要求每个同学的最高选课总成绩,
    所以在成绩表那里要找到每个学号最高总成绩的一门课,这里用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.课程号
    
    评论

报告相同问题?

问题事件

  • 修改了问题 4月28日
  • 创建了问题 4月28日