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

如何获取每个科目获得最高分的学生的姓名?

公孙河
2023-03-14

我有下表

 Name  |  Subject  | Marks
 --------------------------
 a        M          20
 b        M          25  
 c        M          30
 d        C          44 
 e        C          45
 f        C          46 
 g        H          20

在这里,我有一个“学生”表,我想
从学生表中获取每个科目的最大分数的学生的姓名,如以下输出。

 Name | Subject | Marks  
 c        M        30
 f        c        46
 g        h        20

共有3个答案

堵昊焱
2023-03-14

这个基本查询应该可以满足您的要求。

SELECT Name, Subject, Max(Marks)
FROM Student
GROUP by Subject;

已在 SQLFiddle 中试用

注意:用于检查的 SQLite

萧丁雨
2023-03-14

您也可以使用其他函数和cte来获得结果..

例如:1

select B.Name,
       A.Subject,
       B.Marks
from ( select Subject,
              max(Marks) as High_Marks
         from Student
       group by Subject
     ) a
  join Student b
    on a.subject = b.subject
   and a.high_Marks = b.Marks

使用cte和dense_rank功能

;WITH cte

AS

(

SELECT

   [Name],

   [Subject],

   [Marks],

   dense_rank() over(partition BY [Subject] order by [Marks] DESC) AS Rank

FROM Student

)

SELECT * FROM cte WHERE Rank = 1;
马清野
2023-03-14

您可以使用ROW_NUMBER函数仅返回每个主题的“最佳”行:

SQL混音

MS SQL Server 2008架构安装程序:

CREATE TABLE Student
    ([Name] varchar(1), [Subject] varchar(1), [Marks] int)
;

INSERT INTO Student
    ([Name], [Subject], [Marks])
VALUES
    ('a', 'M', 20),
    ('b', 'M', 25),
    ('c', 'M', 30),
    ('d', 'C', 44),
    ('e', 'C', 45),
    ('f', 'C', 46),
    ('g', 'H', 20)
;

查询1:

SELECT Name, Subject, Marks
FROM(
  SELECT *, ROW_NUMBER()OVER(PARTITION BY Subject ORDER BY Marks DESC) rn
    FROM dbo.Student
)X
WHERE rn = 1

结果:

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

  • 我有 3 张桌子 学生(id,姓名) 主题(id,name) 学生主题(学生标识,主题标识,标记) 我想选择通过所有科目的学生姓名(有分数的学生)。 我试过这个:

  • 我想在每门课程中获得最高分,包括该课程的标题和参加该课程考试的学生姓名。我有这些表格,第一个学生 课程表 我还做了一张表格,让学生在课程考试中通过分数与课程联系起来 那我怎么能质疑呢。

  • 问题内容: 我正在研究关键字提取问题。考虑非常普遍的情况 这给了我 很好 对于其中出现的任何新文档,是否有办法获得tfidf得分最高的前n个术语? 问题答案: 您必须做一点点的歌舞才能将矩阵转换为numpy数组,但这应该可以满足您的需求: 这给了我: 该电话确实是有用的,这里有它的文档。我们必须这样做,因为仅支持从小到大的排序。我们呼吁将维数减少到1d,以便可以使用排序后的索引来索引1d特征数组。

  • 问题内容: 怎么做? 该问题的原标题是“ 在带有子查询的复杂查询中使用等级(@Rank:= @Rank + 1)-可以吗? ”,因为我一直在寻找使用等级的解决方案,但是现在我看到Bill所发布的解决方案是好多了。 原始问题: 我正在尝试组成一个查询,该查询将从给定定义顺序的每个组中获取最后一条记录: 表达式通常用于等级,但对我来说,在2个子查询中使用时,它看起来可疑,但仅初始化一次。这样行吗? 其

  • 我有一个表员工与字段部门,员工和工资。我想要一个查询,以列出部门最高工资和该工资的员工姓名。 我知道这很简单。我在谷歌上搜索,但找到了这样的答案,只列出了部门和工资