Mysql PTA练习查询平均成绩最高的前3名同学

查询平均成绩最高的前3名同学

本题目要求编写SQL语句, 查询平均成绩最高的前3名同学的学号,姓名,性别及年龄。
提示:在MySQL中可使用"limit n"语句实现 “top n” 。

表结构:

请在这里写定义表结构的SQL语句。例如:

CREATE TABLE stu (
sno char(4) NOT NULL,
sname char(8) NOT NULL,
sex tinyint(1) DEFAULT NULL,
mno char(2) DEFAULT NULL,
birdate datetime DEFAULT NULL,
memo text,
PRIMARY KEY (sno)
);
CREATE TABLE sc (
sno char(4) NOT NULL,
cno char(4) NOT NULL,
grade decimal(6,1) DEFAULT NULL,
PRIMARY KEY (sno,cno),
CONSTRAINT fk_sc_sno FOREIGN KEY (sno) REFERENCES stu (sno)
);

表样例

请在这里给出上述表结构对应的表样例。例如
在这里插入图片描述
sc表:

在这里插入图片描述

输出样例:

请在这里给出输出样例。例如:
在这里插入图片描述

题解

SELECT stu.sno as 学号, stu.sname as 姓名,stu.sex as 性别,year(now())-year(stu.birdate)-1 as 年龄,avg(sc.grade)as 平均成绩
from stu join sc on stu.sno=sc.sno GROUP BY sc.sno ORDER BY avg(sc.grade) DESC limit 3

这道题目通过左连接将两张表连在一起,然后根据题目要求进行排序,然后要求前面三位用limit来限制数量

这里year相减之后又-1是因为这道题目当时是2020年的 我2021年做算出来的年龄会多1 所以减去了。

Logo

本社区面向用户介绍CSDN开发云部门内部产品使用和产品迭代功能,产品功能迭代和产品建议更透明和便捷

更多推荐