|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
列出平均成绩最高的学生名字和成绩。(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 去除。
希望能对您有所帮助!如有任何问题,请随时提问。
|
|