分数 10
全屏浏览题目
切换布局
作者 张庆
单位 集美大学
本题目要求编写SQL语句,查询平均成绩最高的同学的学号,姓名,性别,年龄及平均成绩。
注意:假设以当前系统时间为2020年来计算学生年龄。
提示:MSSQLServer 评测SQL语句。
表结构:
请在这里写定义表结构的SQL语句。例如:
-- 学生表
CREATE TABLE stu (
sno char(4) NOT NULL,
sname nvarchar(8) NOT NULL,
sex smallint DEFAULT NULL,
mno char(2) DEFAULT NULL,
birdate datetime DEFAULT NULL,
memo ntext,
PRIMARY KEY (sno)
);
-- 课程表
CREATE TABLE cou (
cno char(4) NOT NULL,
cname nvarchar(30) NOT NULL,
credit smallint DEFAULT NULL,
ptime char(5) DEFAULT NULL,
teacher nvarchar(10) DEFAULT NULL,
PRIMARY KEY ( cno )
);
-- 学生选课成绩表
CREATE TABLE sc (
sno char(4) NOT NULL, -- 学生学号
cno char(4) NOT NULL, -- 课程号
grade decimal(4,1) DEFAULT NULL,
PRIMARY KEY ( sno , cno ),
CONSTRAINT fk_sc_cno FOREIGN KEY ( cno ) REFERENCES cou ( cno ),
CONSTRAINT fk_sc_sno FOREIGN KEY ( sno ) REFERENCES stu ( sno )
)
表样例
这里给出上述表结构对应的表样例。例如
``stu```表:
sc
表:
输出样例:
请在这里给出输出样例。例如:
select a.学号,a.姓名,a.性别,a.年龄,a.平均成绩 from
(select stu.sno 学号,stu.sname 姓名,stu.sex 性别
,2020-year(stu.birdate) 年龄,avg(sc.grade) 平均成绩
from stu join sc on sc.sno=stu.sno
group by stu.sno,stu.sname,stu.sex,stu.birdate
) a
where a.平均成绩=( select max(平均成绩) from
(select stu.sno 学号,stu.sname 姓名,stu.sex 性别
,2020-year(stu.birdate) 年龄,avg(sc.grade) 平均成绩
from stu join sc on sc.sno=stu.sno
group by stu.sno,stu.sname,stu.sex,stu.birdate
) a
)