当前位置: 首页 > 知识库问答 >
问题:

每门课程的最高分数及学生姓名

赵炯
2023-03-14

我想在每门课程中获得最高分,包括该课程的标题和参加该课程考试的学生姓名。我有这些表格,第一个学生

课程表

我还做了一张表格,让学生在课程考试中通过分数与课程联系起来

那我怎么能质疑呢。

共有2个答案

严峰
2023-03-14

我使用带有课程id分区和考试分数desc的RANK()来获得排名。然后选择排名=1以获得排名的最高值。Windows函数对于这些类型的Qestion非常有用。

SELECT 
  A.[CourseId]
 ,A.[exam_mark]
 ,A.[name]
 ,A.[title]
FROM
(
     SELECT
      RANK() OVER (PARTITION BY [mark].[course_id]   ORDER BY  [mark].[exam_mark] DESC ) AS [rnk] 
     ,[Courses].[id] AS [CourseId]
     ,[Courses].[title] 
     ,[mark].[exam_mark]
     ,[students_].[name]
   FROM mark
       INNER JOIN  students_ 
             ON  mark.student_id = students_.id
       INNER JOIN  Courses 
             ON  mark.course_id = Courses.id

  ) AS A 
   WHERE A.rnk = 1
司徒俊健
2023-03-14

您可以使用窗口函数。一种方法是:

select . . .   -- whatever columns you want
from (select sc.*,
             rank() over (partition by course_id order by exam_mark desc) as seqnum
      from student_courses sc
     ) sc join
     students s
     on sc.student_id = s.id join
     courses c
     on sc.course_id = c.id
where seqnum = 1;
 类似资料:
  • 我有下表 在这里,我有一个“学生”表,我想 从学生表中获取每个科目的最大分数的学生的姓名,如以下输出。

  • 我正在做一个学生注册数据库项目。学生注册课程并获得成绩。有时一个学生重复一门课程,获得更好的成绩。我需要只使用最好的成绩来计算grade_point和学分的总和。所以对于每个在不同学期重复课程的学生,我必须确定最高的成绩是多少。emplid代表学生,course_id标识一门课程,学分是学分hr,Grade_point是字母等级的数值,术语代表学期课程... 下面是一个我正在努力完成的例子。 OP

  • 本文向大家介绍现在有一个学生表,一个课程成绩表,请问,怎么找出学生课程的最高分数,谈一谈思路相关面试题,主要包含被问及现在有一个学生表,一个课程成绩表,请问,怎么找出学生课程的最高分数,谈一谈思路时的应答技巧和注意事项,需要的朋友参考一下 通过表关联查询,使用 MAX 函数

  • 问题内容: 我有下表 在这里,我有一个“学生”表,我想 从该学生表中获取从每个学科获得满分的学生的姓名,例如以下输出。 问题答案: 您可以使用ROW_NUMBER函数仅返回每个主题的“最佳”行: SQL小提琴 MS SQL Server 2008架构设置 : 查询1 : 结果 :

  • 我想使用ArrayList打印出学生的名字和学生的id。但是,我不知道如何做到这一点,因为在这个类中,我只能打印出名字的ArrayList或id的ArrayList。我在想也许使用另一个类来创建一个学生对象,但是我不确定如何做到这一点。

  • 我使用的是MySQL8.0.23版本 给出的表格是:- 我想要得到每个城市各科最高分学生的完整数据 -- 我已经用过这个了,但是我还是不能看到那个学生的名字和id