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)