mysql PTA题解查询平均成绩最高的前三名同学
Mysql PTA练习查询平均成绩最高的前3名同学查询平均成绩最高的前3名同学本题目要求编写SQL语句, 查询平均成绩最高的前3名同学的学号,姓名,性别及年龄。提示:在MySQL中可使用"limit n"语句实现 “top n” 。表结构:请在这里写定义表结构的SQL语句。例如:CREATE TABLE stu (sno char(4) NOT NULL,sname char(8) NOT NUL
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 所以减去了。
更多推荐

所有评论(0)