-- 19、 查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。
select * from student as s inner join score as sc on s.Sno=sc.Sno where sc.Cno='3-105' and sc.degree> (select degree from Score where Sno=109 and Cno='3-105')
-- 20、 查询score中选学多门课程的同学中分数为非最高分成绩的记录。
select Sno,count (Cno)from score where degree <(select max(degree) from Score) group by Sno having count(Cno)>1;
--21、 查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。
select * from score where degree>(select degree from Score where Cno='3-105' and sno=109)
--22、 查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。
select sno ,sname ,sbirthday from student where YEAR(Sbirthday)= (select YEAR(sbirthday) from student where sno=108);
--23、 查询“张旭“教师任课的学生成绩。
select s.sname,c.cname,sc.degree from student as s inner join score as sc on s.sno=sc.sno inner join course as c on sc.cno=c.cno where c.tno=(select tno from teacher where tname='张旭')
--24、 查询选修某课程的同学人数多于5人的教师姓名。
--25、 查询95033班和95031班全体学生的记录。
select * from student as t inner join score as sc on t.sno=sc.sno where sclass in(95033,95031) ;
--26、 查询存在有85分以上成绩的课程Cno.
select * from score where degree >85
--27、 查询出“计算机系“教师所教课程的成绩表。
select * from score where cno in ( select cno from course where tno in(select tno from teacher where depart='计算机系'));
--28、 查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。
select tname ,prof from teacher where depart in('计算机系','电子工程系') group by prof ,tname;
--29、 查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学的 Cno、Sno和Degree,并按Degree从高到低次序排序。
select cno,sno,degree from score where degree> any (select degree from score where cno='3-245') and cno='3-105' order by degree;
--30、 查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno 和Degree.
select cno,sno,degree from score where degree> any (select degree from score where cno='3-245') and cno='3-105';
--31、 查询所有教师和同学的name、sex和birthday.
select tsex,tname ,tbirthday from teacher;
--32、 查询所有“女”教师和“女”同学的name、sex和birthday.
select sname,ssex,sbirthday from student where ssex='女' union all select tname ,tsex,tbirthday from teacher where tsex='女';
--33、 查询成绩比该课程平均成绩低的同学的成绩表。
select degree, sno from score as a where degree<(select avg(degree) from score as b where a.cno =b.cno)
--34、 查询所有任课教师的Tname和Depart.
select Tname ,depart from Teacher where tno in(select tno from course)
--35 查询所有未讲课的教师的Tname和Depart.
select Tname ,depart from Teacher where Tno not in(select tno from course)
--36、查询至少有2名男生的班号。
select sclass, count(sno)人数 from student group by Sclass having count(sno)>=2;
--37、查询Student表中不姓“王”的同学记录。
select * from student where sname not like '王%';
--38、查询Student表中每个学生的姓名和年龄。
select sname ,sbirthday from student
--39、查询Student表中最大和最小的Sbirthday日期值。
select max(Sbirthday)最大值, min(sbirthday)最小值 from student;
--40、以班号和年龄从大到小的顺序查询Student表中的全部记录。
select * from student order by Sclass,Sbirthday desc ;
--41、查询“男”教师及其所上的课程。
select * from Course as c left join Teacher as t on t.tno=c.tno where t.tsex='男';
--42、查询最高分同学的Sno、Cno和Degree列。
select top 1 * from score order by degree desc;
select * from student as s inner join score as sc on s.Sno=sc.Sno where sc.Cno='3-105' and sc.degree> (select degree from Score where Sno=109 and Cno='3-105')
-- 20、 查询score中选学多门课程的同学中分数为非最高分成绩的记录。
select Sno,count (Cno)from score where degree <(select max(degree) from Score) group by Sno having count(Cno)>1;
--21、 查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。
select * from score where degree>(select degree from Score where Cno='3-105' and sno=109)
--22、 查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。
select sno ,sname ,sbirthday from student where YEAR(Sbirthday)= (select YEAR(sbirthday) from student where sno=108);
--23、 查询“张旭“教师任课的学生成绩。
select s.sname,c.cname,sc.degree from student as s inner join score as sc on s.sno=sc.sno inner join course as c on sc.cno=c.cno where c.tno=(select tno from teacher where tname='张旭')
--24、 查询选修某课程的同学人数多于5人的教师姓名。
--25、 查询95033班和95031班全体学生的记录。
select * from student as t inner join score as sc on t.sno=sc.sno where sclass in(95033,95031) ;
--26、 查询存在有85分以上成绩的课程Cno.
select * from score where degree >85
--27、 查询出“计算机系“教师所教课程的成绩表。
select * from score where cno in ( select cno from course where tno in(select tno from teacher where depart='计算机系'));
--28、 查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。
select tname ,prof from teacher where depart in('计算机系','电子工程系') group by prof ,tname;
--29、 查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学的 Cno、Sno和Degree,并按Degree从高到低次序排序。
select cno,sno,degree from score where degree> any (select degree from score where cno='3-245') and cno='3-105' order by degree;
--30、 查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno 和Degree.
select cno,sno,degree from score where degree> any (select degree from score where cno='3-245') and cno='3-105';
--31、 查询所有教师和同学的name、sex和birthday.
select tsex,tname ,tbirthday from teacher;
--32、 查询所有“女”教师和“女”同学的name、sex和birthday.
select sname,ssex,sbirthday from student where ssex='女' union all select tname ,tsex,tbirthday from teacher where tsex='女';
--33、 查询成绩比该课程平均成绩低的同学的成绩表。
select degree, sno from score as a where degree<(select avg(degree) from score as b where a.cno =b.cno)
--34、 查询所有任课教师的Tname和Depart.
select Tname ,depart from Teacher where tno in(select tno from course)
--35 查询所有未讲课的教师的Tname和Depart.
select Tname ,depart from Teacher where Tno not in(select tno from course)
--36、查询至少有2名男生的班号。
select sclass, count(sno)人数 from student group by Sclass having count(sno)>=2;
--37、查询Student表中不姓“王”的同学记录。
select * from student where sname not like '王%';
--38、查询Student表中每个学生的姓名和年龄。
select sname ,sbirthday from student
--39、查询Student表中最大和最小的Sbirthday日期值。
select max(Sbirthday)最大值, min(sbirthday)最小值 from student;
--40、以班号和年龄从大到小的顺序查询Student表中的全部记录。
select * from student order by Sclass,Sbirthday desc ;
--41、查询“男”教师及其所上的课程。
select * from Course as c left join Teacher as t on t.tno=c.tno where t.tsex='男';
--42、查询最高分同学的Sno、Cno和Degree列。
select top 1 * from score order by degree desc;