10-1 查询选修某两门课程的学生(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 sno 学号
from sc
where cno in('C001' , 'C002')
group by sno
having count(cno)>=2
10-2 查询比“网络工程”专业所有学生年龄都小的学生姓名
本题目要求编写SQL语句,
查询比“网络工程”专业所有学生年龄都小的学生姓名。
表结构:
请在这里写定义表结构的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`),KEY `fk_stu_mno` (`mno`),CONSTRAINT `fk_stu_mno` FOREIGN KEY (`mno`) REFERENCES `major` (`mno`)
);
CREATE TABLE `major` (`mno` char(2) NOT NULL,`mname` varchar(20) NOT NULL,PRIMARY KEY (`mno`)
)
表样例
请在这里给出上述表结构对应的表样例。例如
stu
表:
major
表:
输出样例:
请在这里给出输出样例。例如:
select sname
from stu
where birdate>
(select max(birdate)from stuwhere mno=(select mnofrom majorwhere mname='网络工程')
)
10-3 查询成绩最高的前三名同学
本题目要求编写SQL语句,
查询‘C语言’课程成绩最高的前三名同学。
提示:使用"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 `cou` (`cno` char(4) NOT NULL,`cname` varchar(30) NOT NULL,`credit` smallint(6) DEFAULT NULL,`ptime` char(5) DEFAULT NULL,`teacher` char(10) DEFAULT NULL,PRIMARY KEY (`cno`)
);
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_cno` FOREIGN KEY (`cno`) REFERENCES `cou` (`CNO`),CONSTRAINT `fk_sc_sno` FOREIGN KEY (`sno`) REFERENCES `stu` (`sno`)
);
表样例
请在这里给出上述表结构对应的表样例。例如
stu
表:
cou
表:
sc
表:
输出样例:
请在这里给出输出样例。例如:
select stu.sname as 姓名,sc.grade as 成绩
from stu
join sc on sc.sno=stu.sno
join cou on sc.cno=cou.cno
where cou.cname='C语言'
order by grade desc
limit 3
10-4 查询S001学生选修而S003学生未选修的课程
本题目要求编写SQL语句,
检索出 sc
表中学号为S001的学生选修的而S003学号学生未选修的课程号。
提示:MySQL不允许使用 except语句。
表结构:
请在这里写定义表结构的SQL语句。例如:
CREATE TABLE `sc` (`sno` char(4) NOT NULL, -- 学号`cno` char(4) NOT NULL, -- 课程号`grade` decimal(6,1) DEFAULT NULL, -- 成绩PRIMARY KEY (`sno`,`cno`)
);
表样例
请在这里给出上述表结构对应的表样例。例如
sc
表:
输出样例:
请在这里给出输出样例。例如:
SELECT cno 课程号
FROM sc
WHERE sno = 'S001' and cno not IN(SELECT cno FROM sc WHERE sno = 'S003' )
10-5 查询各专业学生的平均成绩
本题目要求编写SQL语句,
统计各专业的学生选课的平均成绩,如果某专业尚未有任何学生选修课程或成绩为空时,平均分计为0。输出结果集按照major
表中的mno
升序排序。
表结构:
请在这里写定义表结构的SQL语句。例如:
CREATE TABLE `major` (`mno` char(2) NOT NULL,`mname` varchar(20) NOT NULL,PRIMARY KEY (`mno`)
);
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`),CONSTRAINT `fk_stu_mno` FOREIGN KEY (`mno`) REFERENCES `major` (`mno`)
);
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`)
);
表样例
请在这里给出上述表结构对应的表样例。例如
major
表:
stu
表:
sc
表:
输出样例:
请在这里给出输出样例。例如:
select mname 专业,ifnull(avg(grade),0)平均成绩
from major left outer join(
select mno,grade from stu,sc
where stu.sno=sc.sno)as a on major.mno=a.mno
group by major.mno
order by major.mno;