1、 Having Avg(Score)60-3、查询所有同学的学号、姓名、选课数、总成绩; Select StuId,StuName, SelCourses=(Select Count(CourseId) From tblScore t1 Where t1.StuId=s1.StuId), SumScore=(Select Sum(Score) From tblScore t2 Where t2.StuId=s1.StuId) From tblStudent s1-4、查询姓“李”的老师的个数; Select Count(*) From tblTeacher Where TeaName like
2、 李%-5、查询没学过“叶平”老师课的同学的学号、姓名; Select StuId,StuName From tblStudent Where StuId Not In ( Select StuID From tblScore sc Inner Join tblCourse cu ON sc.CourseId=cu.CourseId Inner Join tblTeacher tc ON cu.TeaId=tc.TeaId Where tc.TeaName=叶平 )-6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名; Select StuId,StuName From tb
3、lStudent st Where (Select Count(*) From tblScore s1 Where s1.StuId=st.StuId And s1.CourseId= And (Select Count(*) From tblScore s2 Where s2.StuId=st.StuId And s2.CourseId=-7、查询学过“叶平”老师所教的所有课的同学的学号、姓名; Select StuId,StuName From tblStudent st Where not exists ( Select CourseID From tblCourse cu Inner
4、Join tblTeacher tc On cu.TeaID=tc.TeaID Where tc.TeaName= And CourseID not in (Select CourseID From tblScore Where StuID=st.StuID) )-8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名; Select StuId,StuName From tblStudent s1 -9、查询所有课程成绩小于60分的同学的学号、姓名; Where StuId Not IN (Select StuId From tblScore sc Where st
5、.StuId=sc.StuId And Score60)-10、查询没有学全所有课的同学的学号、姓名; Where (Select Count(*) From tblScore sc Where st.StuId=sc.StuId) (Select Count(*) From tblCourse)-11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名; -运用连接查询 Select DistInct st.StuId,StuName From tblStudent st Inner Join tblScore sc ON st.StuId=sc.StuId Where s
6、c.CourseId IN (Select CourseId From tblScore Where StuId=1001 -嵌套子查询 Where StuId In Select Distinct StuId From tblScore Where CourseId In (Select CourseId From tblScore Where StuId=-12、查询至少学过学号为“1001”同学所有课程的其他同学学号和姓名; Select Distinct StuId From tblScore Where CourseId Not In (Select CourseId From tb
7、lScore Where StuId=-13、把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩; (从子查询中获取父查询中的表名,这样也行? -创建测试表 Select * Into Sc From tblScore go Update Sc Set Score=(Select Avg(Score) From tblScore s1 Where s1.CourseId=sc.CourseId) Where CourseId IN (Select CourseId From tblCourse cs INNER JOIN tblTeacher tc ON cs.TeaID=tc.T
8、eaID WHERE TeaName =-14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名; Select StuID,StuName From tblStudent st Where StuId 1002 And Not Exists(Select * From tblScore sc Where sc.StuId=st.StuId And CourseId Not In (Select CourseId From tblScore Where StuId=) Not Exists(Select * From tblScore Where StuId= And Cour
9、seId Not In (Select CourseId From tblScore sc Where sc.StuId=st.StuId)-15、删除学习“叶平”老师课的SC表记录; Delete From tblScore Where CourseId IN (Select CourseId From tblCourse cs INNER JOIN tblTeacher tc ON cs.TeaId=tc.TeaId Where tc.TeaName=-16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“003”课程的同学学号、号课的平均成绩; Insert Into t
10、blScore (StuId,CourseId,Score) Select StuId,(Select Avg(Score) From tblScore Where CourseId=) From tblScore Where StuId Not In (Select StuId From tblScore Where CourseId=003) -17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示: 学生ID,数据库,企业管理,英语,有效课程数,有效平均分 Select StuId ,数据库=(Select Score From tblSc
11、ore sc Inner Join tblCourse cs On sc.CourseId=cs.CourseId Where CourseName=数据库 And sc.StuID=st.StuId) ,企业管理=(Select Score From tblScore sc Inner Join tblCourse cs On sc.CourseId=cs.CourseId Where CourseName=企业管理 ,英语=(Select Score From tblScore sc Inner Join tblCourse cs On sc.CourseId=cs.CourseId Wh
12、ere CourseName=英语 ,有效课程数=(Select Count(Score) From tblScore sc Inner Join tblCourse cs On sc.CourseId=cs.CourseId Where (CourseName= or CourseName=) And sc.StuID=st.StuId) ,有效平均分=(Select Avg(Score) From tblScore sc Inner Join tblCourse cs On sc.CourseId=cs.CourseId Where (CourseName= From tblStudent
13、 st Order by 有效平均分 Desc-18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分 Select CourseId as 课程ID, 最高分=(Select Max(Score) From tblScore sc Where sc.CourseId=cs.CourseId ), 最低分=(Select Min(Score) From tblScore sc Where sc.CourseId=cs.CourseId ) From tblCourse cs-19、按各科平均成绩从低到高和及格率的百分数从高到低顺序 (百分数后如何格式化为两位小数? Sele
14、ct 课程ID,平均分,及格率 From (Select CourseId as 课程ID, 平均分=(Select Avg(Score) From tblScore sc Where sc.CourseId=cs.CourseId ), 及格率=Convert(varchar(10),(Select Count(*) From tblScore sc Where sc.CourseId=cs.CourseId And sc.Score=60)*10000/(Select Count(*) From tblScore sc Where sc.CourseId=cs.CourseId)/100)
15、+% From tblScore cs) as tmp Group by 课程ID,平均分,及格率 Order by 平均分, Convert(float,substring(及格率,1,len(及格率)-1) Desc-20、查询如下课程平均成绩和及格率的百分数(用1行显示): 企业管理(001),马克思(002),OO&UML (003),数据库(004) Select 课程ID=sc.CourseId,课程名称=cs.CourseName,平均成绩=Avg(Score) ,及格率 =Convert(varchar(10),(Select Count(Score) From tblScor
16、e Where CourseId=sc.CourseId And Score=60)*10000/Count(Score)/100.0)+ From tblScore sc Inner Join tblCourse cs ON sc.CourseId=cs.CourseId Where sc.CourseId like 001234 Group By sc.CourseId,cs.CourseName-21、查询不同老师所教不同课程平均分从高到低显示 Select 课程ID=CourseId,课程名称=CourseName,授课教师=TeaName,平均成绩=(Select Avg(Score
17、) From tblScore Where CourseId=cs.CourseId) Inner Join tblTeacher tc ON cs.TeaId=tc.TeaId Order by 平均成绩 Desc-22、查询如下课程成绩第 3 名到第 6 名的学生成绩单:企业管理(001),马克思(002),UML (003),数据库(004) 格式:学生ID,学生姓名,企业管理,马克思,UML,数据库,平均成绩 Select * From Select Top 6 学生ID=StuId,学生姓名=StuName ,企业管理=(Select Score From tblScore sc I
18、nner Join tblCourse cs On sc.CourseId=cs.CourseId Where CourseName= ,马克思=(Select Score From tblScore sc Inner Join tblCourse cs On sc.CourseId=cs.CourseId Where CourseName=马克思 ,UML=(Select Score From tblScore sc Inner Join tblCourse cs On sc.CourseId=cs.CourseId Where CourseName=UML ,数据库=(Select Sco
19、re From tblScore sc Inner Join tblCourse cs On sc.CourseId=cs.CourseId Where CourseName= ,平均成绩=(Select Avg(Score) From tblScore sc Inner Join tblCourse cs On sc.CourseId=cs.CourseId Where (CourseName=or CourseName= ,排名=Row_Number() Over(Order by(Select Avg(Score) From tblScore sc Inner Join tblCours
20、e cs On sc.CourseId=cs.CourseId Where (CourseName=) And sc.StuID=st.StuId) DESC) From tblStudent st Order by 排名 ) as tmp Where 排名 between 3 And 6-23、统计列印各科成绩,各分数段人数:课程ID,课程名称,100-85,85-70,70-60, 60 Select 课程ID=CourseId, 课程名称=CourseName ,100-85=(Select Count(*) From tblScore sc Where CourseId=cs.Cour
21、seId And Score between 85 And 100) ,85-70=(Select Count(*) From tblScore sc Where CourseId=cs.CourseId And Score between 70 And 84) ,70-60=(Select Count(*) From tblScore sc Where CourseId=cs.CourseId And Score between 60 And 69) ,60=(Select Count(*) From tblScore sc Where CourseId=cs.CourseId And Score =2-31、1981年出生的学生名单(注:Student表中Sage列的类型是datetime) Select * From tblStudent Where Year(Sage)=1981-32、查询
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1