【发布时间】:2021-07-01 15:29:04
【问题描述】:
我是 SQL 新手,我正在使用以下表格:
CREATE TABLE Student (
StudentID int,
Name nvarchar(30),
Class nvarchar(30)
);
INSERT INTO Student (StudentID, Name, Class)
VALUES (1,'Alfredo','X'), (2,'Jack','X'), (3,'Chris','Y'), (4,'Paul','Y');
CREATE TABLE Subject (
SubjectID int,
Name nvarchar(30),
Class nvarchar(30)
);
INSERT INTO Subject (SubjectID, Name, Class)
VALUES (1,'Maths','X'), (2, 'Science','X'), (3, 'English','Y'), (4, 'Arts','Y');
CREATE TABLE Performance (
StudentID int,
SubjectID int,
Marks int
);
INSERT INTO Performance (StudentID, SubjectID, Marks)
VALUES
(1,1,61),(1,2,75),
(2,1,82),(2,2,64),
(3,3,82),(3,4,83),
(4,3,77),(4,4,81);
我正在尝试编写一个查询来检索每个班级中总分最高的学生姓名。
我的预期输出是:
StudentID Name Marks Class
2 Jack 146 X
3 Chris 165 Y
我尝试使用以下查询来合并表
SELECT * FROM Performance AS p
INNER JOIN
Student AS s
ON p.StudentId = s.StudentId
这个查询检索聚合标记
SELECT StudentID, SUM(MARKS) FROM Performance GROUP BY StudentID
我对如何合并这两个查询以实现我的目标一无所知。还有其他解决方法吗?
请指教
【问题讨论】:
-
你使用的是哪个数据库?
-
我正在使用 MySQL
标签: mysql sql groupwise-maximum