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

获取每个班级中具有最大人数的学生列表

呼延骏俊
2023-03-14

我想从db中获取学生列表,他们在每个班级中使用学生姓名获得最大人数。使用MySQL数据库。

我有如下表格,如学生、班级、成绩(不同年份的成绩)

表结构学生(student_id,student_name,class_id,地址),班级(class_id,class_name),结果(result_id,student_id,年份,分数)

我需要这样的清单

Student Name   class   Marks
Jon            A-1      800
Steve          B-1      789

共有3个答案

毕宏盛
2023-03-14
select s1.student_name, c1.class_name, r1.marks 
from student s1, class c1, results r1,
  (select s2.class_id, max(r2.marks) marks 
   from results r2, student s2
   where r2.student_id = s2.student_id 
   group by s2.class_id) agg
where r1.marks      = agg.marks 
  and r1.student_id = s1.student_id
  and s1.class_id   = c1.class_id
  and s1.class_id   = agg.class_id
章鸿光
2023-03-14

您可以使用子查询来过滤每班得分最高的学生:

select  s.student_name
,       c.class_name
,       r.marks
from    results r
join    student s
on      r.student_id = s.student_id
join    class c
on      c.class_id = s.class_id
where   r.result_id =
        (
        select  r2.result_id
        from    student s2
        join    results r2
        on      s2.student_id = r2.student_id
        where   c.class_id = s2.class_id
        order by
                r2.marks desc
        limit   1
        )

SQL Fiddle的真实例子。

江阳夏
2023-03-14

编辑更正的代码,注释是正确的

试试这个SQL链接上的代码

 类似资料:
  • 本文向大家介绍在MySQL中为具有mark1和mark2记录的学生获取最大的个人分数?,包括了在MySQL中为具有mark1和mark2记录的学生获取最大的个人分数?的使用技巧和注意事项,需要的朋友参考一下 为此,请与GROUP BY子句一起使用。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 这是查询以获取具有标记1和标记2

  • 问题内容: 因此,我有一个包含几个列表的列表,这些列表都首先包含三个字符串,然后是一个浮点数,例如: 如何制作一个返回最大值的函数(此处为9.1931)?我试过了 但这只是给我一个清单。 编辑:此外,以任何方式我可以获取值来自何处的索引?喜欢,来自哪个子列表? 问题答案: 循环浏览外部列表,然后选择每个子列表的最后一个元素: 最好将所有与函数相关的变量保留在范围内(将列表作为参数传递,并且不要通过

  • 问题内容: 桌子: 我想获取UserId,每个UserId的max(Date)值。即,具有最新日期的每个UserId的值。有没有一种方法可以简单地在SQL中做到这一点?(最好是Oracle) 更新: 对于任何歧义,我们深表歉意:我需要获取所有UserIds。但是对于每个UserId,仅该用户具有最新日期的那一行。 问题答案: 这将检索其my_date列值等于该用户ID的my_date最大值的所有行

  • 问题内容: 我试过重新安装netbeans,试过重新安装java。我不确定发生了什么,但是我从每个类中都随机得到此异常,直到重新启动netbeans。有类似问题的人吗? 跑: 问题答案: 有时,NetBeans本地缓存目录会损坏(由于应用程序更早崩溃或发生其他/未定义的情况)。NetBeans开始表现异常。重新安装没有帮助,因为本地缓存目录并不总是被删除。 如果您100%确定您的应用程序没有路径问

  • 问题内容: 假设这样的3个表: teacher: student: class: 是否有SQL查询可为每位老师分配多少学生和班级? 结果应该是这样的: 问题答案: 尝试这样的事情:

  • 输入格式 第一行包含一个整数n,它给出了当天提供的主题数量。 接下来的n行包含主题名称(是一个字符串),然后是该主题的24小时格式的开始和结束时间:hh:mm 例如: 注意:时间是以24小时的格式给出的,主题名称之间没有空格。 解释 计算机科学开始最早,结束最早,所以我们先取。在那之后,我们不能选物理,因为它在计算机科学结束之前就开始了。所以我们要上下一节课,也就是化学。但是化学之后我们不能上数学