目录
一、查询各专业学生的平均成绩(MSSQL)
表结构:
表样例
输出样例:
编译代码:
二、查询平均成绩最高的前3名同学
表结构:
表样例
输出样例:
编译代码:
三、 查询同专业的学生(MSSQL)
表结构:
表样例
输出样例:
编译代码 :
四、查询选修某两门课程的学生(MSSQL)
表结构:
表样例
输出样例:
编译代码:
五、查询S001学生选修而S003学生未选修的课程(MSSQL)
表结构:
表样例
输出样例:
编译代码:
一、查询各专业学生的平均成绩(MSSQL)
本题目要求编写SQL语句,
统计各专业的学生选课的平均成绩,如果某专业尚未有任何学生选修课程或成绩为空时,平均分计为0。输出结果集按照major
表中的mno
升序排序。
提示:MSSQLServer 评测SQL语句。
表结构:
定义表结构的SQL语句如下:
-- 专业表
CREATE TABLE major ( mno char(2) NOT NULL,mname nvarchar(20) NOT NULL,PRIMARY KEY (mno)
);
-- 学生表
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),CONSTRAINT fk_stu_mno FOREIGN KEY (mno) REFERENCES major (mno)
);
-- 课程表
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 )
);
表样例
上述表结构对应的表样例。例如
major
表:
stu
表:
sc
表:
输出样例:
请在这里给出输出样例。例如:
编译代码:
select 专业,平均成绩
from
(select major.mno mno , max(mname) 专业,avg(grade) 平均成绩
from major,stu,sc
where major.mno= stu.mno and stu.sno = sc.sno
group by major.mno
unionselect mno mno ,mname 专业,0 平均成绩
from major
where mno not in (select mno from stu)
)t1
二、查询平均成绩最高的前3名同学
本题目要求编写SQL语句,
查询平均成绩最高的前3名同学的学号,姓名,性别及年龄。
提示:可使用"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`)
);
表样例
请在这里给出上述表结构对应的表样例。例如
``stu```表:
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
三、 查询同专业的学生(MSSQL)
本题目要求编写SQL语句,
检索Student
表中与‘张三’在同一个专业的学生记录。
提示: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)
);
表样例
请在这里给出上述表结构对应的表样例。例如
stu
表:
输出样例:
请在这里给出输出样例。例如:
编译代码 :
select sno 学号,sname 姓名
from stu
where mno in (select mno from stu where sname=N'张三') and sname<>N'张三'
四、查询选修某两门课程的学生(MSSQL)
本题目要求编写SQL语句,
检索出 sc
表中至少选修了’C001’与’C002’课程的学生学号。
提示:MSSQLServer 评测SQL语句。
表结构:
请在这里写定义表结构的SQL语句。例如:
-- 学生选课成绩表
CREATE TABLE sc ( sno char(4) NOT NULL, -- 学生学号cno char(4) NOT NULL, -- 选修课程号grade decimal(4,1) DEFAULT NULL,PRIMARY KEY ( sno , cno )
)
表样例
请在这里给出上述表结构对应的表样例。例如
sc
表:
输出样例:
请在这里给出输出样例。例如:
编译代码:
select a.sno '学号'
from (select * from sc where (cno = 'C001')) a
inner join
(select * from sc where (cno = 'C002')) b
on a.sno = b.sno
五、查询S001学生选修而S003学生未选修的课程(MSSQL)
本题目要求编写SQL语句,
检索出 sc
表中学号为S001的学生选修的而S003学号学生未选修的课程号。
注意:查询结果忽略顺序只对比数据。
提示:MSSQLServer 评测SQL语句。
表结构:
定义表结构的SQL语句如:
-- 学生选课成绩表
CREATE TABLE sc ( sno char(4) NOT NULL, -- 学生学号cno char(4) NOT NULL, -- 课程号grade decimal(4,1) DEFAULT NULL,PRIMARY KEY ( sno , cno )
)
表样例
上述表结构对应的表样例如
sc
表:
输出样例:
输出样例如:
编译代码:
select distinct cno 课程号
from sc
where cno in (select distinct cno from sc where sno='S001') and cno not in (select cno from sc where sno='S003')