SQL技术问询:确认筛选各科最优成绩数量最多学生的思路合理性
问题:找出各科目中的“最优学生”
现有一张名为Students的数据表,包含Name、Subject、Mark三列。需求为返回各科目中“最优学生”的姓名与科目,最优学生的定义是在对应科目中拥有最多的最优成绩(即同一成绩下,该学生的出现次数多于其他学生;最终取科目内该类最高次数对应的学生)。
示例数据
('John', 'Math', 10), ('John', 'Math', 10), ('John', 'Math', 11), ('Mia', 'Math', 10), ('Mia', 'Math', 11), ('Bob', 'Science', 12), ('Bob', 'Science', 11), ('Ross', 'Science', 11), ('Ross', 'Science', 12), ('Ross', 'Science', 12)
预期查询结果
John Math Ross Science
结果说明
John的数学成绩中有2个10分和1个11分,其中10分的数量比Mia多1个;Ross的科学成绩中12分的数量(2次)多于Bob的1次,因此二者分别为对应科目的最优学生。
已尝试的SQL语句及结果
我已经按Subject、Name、Mark分组统计相同成绩的数量,执行的SQL语句如下:
SELECT NAME, SUBJECT, MARK, COUNT(*) AS COUNT FROM STUDENTS GROUP BY SUBJECT, NAME, MARK
得到的结果为:
John Math 10 2 John Math 11 1 Mia Math 10 1 Mia Math 11 1 Bob Science 12 1 Bob Science 11 1 Ross Science 11 1 Ross Science 12 2
我的思路
先丢弃同一科目中,不同学生同一成绩数量相同的条目(比如数学科目中John和Mia的11分,数量均为1,需丢弃),得到如下中间结果:
John Math 10 2 Mia Math 10 1 Bob Science 12 1 Ross Science 12 2
之后筛选出各科目中成绩数量最多的学生,但不知如何实现。我并非请求完整解决方案,仅希望确认该思路是否合理,若不合理请提供替代思路。
内容的提问来源于stack exchange,提问作者user16616275
相关产品推荐
相关产品推荐

