鱼C论坛

 找回密码
 立即注册
查看: 488|回复: 1

[已解决]mysql查询

[复制链接]
发表于 2023-6-27 19:43:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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:47:06
本帖最后由 歌者文明清理员 于 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 去除。

希望能对您有所帮助!如有任何问题,请随时提问。
屏幕截图 2023-06-27 154256.png
屏幕截图 2023-06-27 154250.png
屏幕截图 2023-06-27 154244.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-27 19:47:06 | 显示全部楼层    本楼为最佳答案   
本帖最后由 歌者文明清理员 于 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 去除。

希望能对您有所帮助!如有任何问题,请随时提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 14:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表