gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:25:51 25 4
gpt4 key购买 nike

我有下表

 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

最佳答案

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

SQL Fiddle

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

<强> Results :

| NAME | SUBJECT | MARKS |
--------------------------
| f | C | 46 |
| g | H | 20 |
| c | M | 30 |

关于sql - 如何获取每科得分最高的学生的姓名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18058170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com