鱼C论坛

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

[已解决]mysql查询

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

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

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

x
列出平均成绩最高的学生名字和成绩。(SELECT 句中不得使用 TOP n 子句)

数据表相关代码:
  1. CREATE TABLE Students(
  2.     sno CHAR(10) NOT NULL PRIMARY KEY,
  3.     sname VARCHAR(20),
  4.     sex CHAR(2),
  5.     bdate DATE,
  6.     height DECIMAL(5, 2),
  7.     department VARCHAR(20)
  8. );

  9. CREATE TABLE Courses(
  10.     cno CHAR(10) NOT NULL PRIMARY KEY,
  11.     cname VARCHAR(20),
  12.     lhour INT,
  13.     credit DECIMAL(2, 1),
  14.     semester VARCHAR(10)
  15. );

  16. CREATE TABLE SC(
  17.     sno CHAR(10) NOT NULL,
  18.     cno CHAR(10) NOT NULL,
  19.     grade DECIMAL(4, 1),
  20.     PRIMARY KEY(sno, cno),
  21.     CONSTRAINT fk_sno FOREIGN KEY (sno) REFERENCES Students(sno) ON DELETE CASCADE,
  22.     CONSTRAINT fk_cno FOREIGN KEY (cno) REFERENCES Courses(cno) ON DELETE CASCADE
  23. );
  24. INSERT INTO Students VALUES('0102101','张三','男','1988-01-01',1.70,'计算机系');
  25. INSERT INTO Students VALUES('0102105','李四','男','1985-04-01',1.86,'计算机系');
  26. INSERT INTO Students VALUES('0401110','王五','女','1986-02-02',1.65,'电机系');
  27. INSERT INTO Students VALUES('0401111','赵六','男','1987-04-02',1.60,'电机系');
  28. INSERT INTO Courses VALUES('CS-220','编译原理',30,4,'秋季');
  29. INSERT INTO Courses VALUES('CS-221','体系结构',40,2,'秋季');
  30. INSERT INTO Courses VALUES('CS-222','数据库',60,4,'秋季');
  31. INSERT INTO Courses VALUES('EE-110','电子技术',30,4,'秋季');
  32. INSERT INTO Courses VALUES('EE-111','数字逻辑',30,3,'秋季');
  33. INSERT INTO Courses VALUES('EE-112','数字电路',30,4,'秋季');
  34. INSERT INTO SC VALUES('0102101','CS-220',89);
  35. INSERT INTO SC VALUES('0102101','CS-221',90);
  36. INSERT INTO SC VALUES('0102101','CS-222',97);
  37. INSERT INTO SC VALUES('0102105','CS-220',66);
  38. INSERT INTO SC VALUES('0102105','CS-221',70);
  39. INSERT INTO SC VALUES('0102105','CS-222',60);
  40. INSERT INTO SC VALUES('0401110','EE-110',NULL);
  41. INSERT INTO SC VALUES('0401110','EE-111',80);
  42. INSERT INTO SC VALUES('0401110','EE-112',90);
  43. INSERT INTO SC VALUES('0401111','EE-110',90);
  44. INSERT INTO SC VALUES('0401111','EE-111',89);
  45. INSERT INTO SC VALUES('0401111','EE-112',90);
复制代码
最佳答案
2023-6-27 19:47:06
本帖最后由 歌者文明清理员 于 2023-6-27 19:48 编辑

您可以使用以下SQL查询语句来列出平均成绩最高的学生名字和成绩:

sql
Copy Code

  1. SELECT Students.sname, AVG(SC.grade) AS avg_grade
  2. FROM Students
  3. INNER JOIN SC ON Students.sno = SC.sno
  4. GROUP BY Students.sname
  5. ORDER BY avg_grade DESC
  6. LIMIT 1;
复制代码

这个查询语句将计算每个学生的平均成绩,然后按平均成绩降序排序。最后,通过限制结果集的大小为1,您将获得平均成绩最高的学生的姓名和成绩。

执行以上查询后,您将看到输出结果类似于:

Copy Code

  1. +-------+-----------+
  2. | sname | avg_grade |
  3. +-------+-----------+
  4. | 张三  |   92.0000 |
  5. +-------+-----------+
复制代码

在这个例子中,张三的平均成绩最高,为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

  1. SELECT Students.sname, AVG(SC.grade) AS avg_grade
  2. FROM Students
  3. INNER JOIN SC ON Students.sno = SC.sno
  4. GROUP BY Students.sname
  5. ORDER BY avg_grade DESC
  6. LIMIT 1;
复制代码

这个查询语句将计算每个学生的平均成绩,然后按平均成绩降序排序。最后,通过限制结果集的大小为1,您将获得平均成绩最高的学生的姓名和成绩。

执行以上查询后,您将看到输出结果类似于:

Copy Code

  1. +-------+-----------+
  2. | sname | avg_grade |
  3. +-------+-----------+
  4. | 张三  |   92.0000 |
  5. +-------+-----------+
复制代码

在这个例子中,张三的平均成绩最高,为92.0000。

请注意,如果有多个学生具有相同的最高平均成绩,上述查询只会返回一个学生。如果您需要列出所有平均成绩最高的学生,可以将 LIMIT 1 去除。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 06:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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