mysql查询
列出平均成绩最高的学生名字和成绩。(SELECT 句中不得使用 TOP n 子句)数据表相关代码:
CREATE TABLE Students(
sno CHAR(10) NOT NULL PRIMARY KEY,
sname VARCHAR(20),
sex CHAR(2),
bdate DATE,
height DECIMAL(5, 2),
department VARCHAR(20)
);
CREATE TABLE Courses(
cno CHAR(10) NOT NULL PRIMARY KEY,
cname VARCHAR(20),
lhour INT,
credit DECIMAL(2, 1),
semester VARCHAR(10)
);
CREATE TABLE SC(
sno CHAR(10) NOT NULL,
cno CHAR(10) NOT NULL,
grade DECIMAL(4, 1),
PRIMARY KEY(sno, cno),
CONSTRAINT fk_sno FOREIGN KEY (sno) REFERENCES Students(sno) ON DELETE CASCADE,
CONSTRAINT fk_cno FOREIGN KEY (cno) REFERENCES Courses(cno) ON DELETE CASCADE
);
INSERT INTO Students VALUES('0102101','张三','男','1988-01-01',1.70,'计算机系');
INSERT INTO Students VALUES('0102105','李四','男','1985-04-01',1.86,'计算机系');
INSERT INTO Students VALUES('0401110','王五','女','1986-02-02',1.65,'电机系');
INSERT INTO Students VALUES('0401111','赵六','男','1987-04-02',1.60,'电机系');
INSERT INTO Courses VALUES('CS-220','编译原理',30,4,'秋季');
INSERT INTO Courses VALUES('CS-221','体系结构',40,2,'秋季');
INSERT INTO Courses VALUES('CS-222','数据库',60,4,'秋季');
INSERT INTO Courses VALUES('EE-110','电子技术',30,4,'秋季');
INSERT INTO Courses VALUES('EE-111','数字逻辑',30,3,'秋季');
INSERT INTO Courses VALUES('EE-112','数字电路',30,4,'秋季');
INSERT INTO SC VALUES('0102101','CS-220',89);
INSERT INTO SC VALUES('0102101','CS-221',90);
INSERT INTO SC VALUES('0102101','CS-222',97);
INSERT INTO SC VALUES('0102105','CS-220',66);
INSERT INTO SC VALUES('0102105','CS-221',70);
INSERT INTO SC VALUES('0102105','CS-222',60);
INSERT INTO SC VALUES('0401110','EE-110',NULL);
INSERT INTO SC VALUES('0401110','EE-111',80);
INSERT INTO SC VALUES('0401110','EE-112',90);
INSERT INTO SC VALUES('0401111','EE-110',90);
INSERT INTO SC VALUES('0401111','EE-111',89);
INSERT INTO SC VALUES('0401111','EE-112',90); 本帖最后由 歌者文明清理员 于 2023-6-27 19:48 编辑
您可以使用以下SQL查询语句来列出平均成绩最高的学生名字和成绩:
sql
Copy Code
SELECT Students.sname, AVG(SC.grade) AS avg_grade
FROM Students
INNER JOIN SC ON Students.sno = SC.sno
GROUP BY Students.sname
ORDER BY avg_grade DESC
LIMIT 1;
这个查询语句将计算每个学生的平均成绩,然后按平均成绩降序排序。最后,通过限制结果集的大小为1,您将获得平均成绩最高的学生的姓名和成绩。
执行以上查询后,您将看到输出结果类似于:
Copy Code
+-------+-----------+
| sname | avg_grade |
+-------+-----------+
| 张三| 92.0000 |
+-------+-----------+
在这个例子中,张三的平均成绩最高,为92.0000。
请注意,如果有多个学生具有相同的最高平均成绩,上述查询只会返回一个学生。如果您需要列出所有平均成绩最高的学生,可以将 LIMIT 1 去除。
希望能对您有所帮助!如有任何问题,请随时提问。
页:
[1]