C#第十一章 连接查询和分组查询

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_45155377/article/details/102677097

C#第十一章 连接查询和分组查询

 --上机练习一
    --练习--使用分组查询学生相关信息
    --每个参加考试的学员的平均分
  SELECT StudentNo, AVG(StudentResult)as 平均分 
  FROM dbo.Result  
  GROUP BY  StudentNo
  
  --每门课程的平均分,并按照降序排列
  SELECT COUNT(StudentNo) AS 人数, AVG(StudentResult)AS 平均分,SubjectId AS 科目 
  FROM dbo.Result 
  GROUP BY  SubjectId  
  ORDER BY AVG(StudentResult) DESC
 
 --查询每个学生参加的所有的考试的总分,并按照降序排列
  SELECT  StudentNo AS 学员,sum(StudentResult)AS 总分 
  FROM dbo.Result 
  GROUP BY StudentNo  
  ORDER BY sum(StudentResult) DESC
         
 --上机练习二
  --指导--限定条件的分组查询
  --每学期学时超过50的课程数
  SELECT GradeId AS 学期,ClassHour  AS 课程数 
  FROM dbo.Subject
  GROUP BY  GradeId,ClassHour
  HAVING ClassHour>50
  
  --考试的成绩中,平均分及格的学生记录,并按照成绩降序排序
  SELECT AVG(StudentResult)AS 平均分 ,count(StudentResult) AS 及格人数
  FROM dbo.Result  
  GROUP BY StudentResult 
  HAVING AVG(StudentResult)>60 
  ORDER BY AVG(StudentResult) DESC 
  
  --查询北京地区的每学期学生人数
  SELECT COUNT(StudentNo)AS 人数,GradeId 
  FROM dbo.Student 
  WHERE Address like '北京%'  
  GROUP BY GradeId
  
  --查询每学期学生的平均年龄
  SELECT COUNT(StudentNo)AS 人数 ,GradeId AS 年级,avg(DATEDIFF(dd,BornDate,GETDATE())/365)AS 平均年龄
   FROM dbo.Student 
   GROUP BY GradeId
   
   --考试日期为2013-3-22日的课程的及格平均分
  SELECT AVG(StudentResult) AS 平均分 
  FROM dbo.Result 
  WHERE ExamDate='2013-3-22'
   HAVING AVG(StudentResult)>60
  
   --至少一次考试不及格的学生学号,不及格次数
  SELECT StudentNo , COUNT(StudentResult)AS 次数 
  FROM dbo.Result 
  WHERE StudentResult<60  
   GROUP BY StudentNo  
   HAVING  COUNT(StudentResult)>=1
  
  SELECT COUNT(StudentNo)AS 人数,SubjectId AS 年级 ,min(StudentResult)AS 最低分 
  FROM dbo.Result 
  GROUP BY SubjectId
  
  SELECT SubjectId AS 科目, COUNT(StudentNo)AS 人数, MAX(StudentResult)AS 最高分,min(StudentResult) AS 最低分,avg(StudentResult)AS 平均分 
  FROM dbo.Result 
  WHERE StudentResult>60  
  GROUP BY SubjectId 
  HAVING min(StudentResult)>15   
  ORDER BY min(StudentResult) DESC
  
  --上机练习三
  --指导--两表内连接查询信息
  --学生姓名,所属年级名称及联系电话
  SELECT S.StudentNo,S.StudentName,S.GradeId,S.Phone 
  FROM dbo.Student AS S , dbo.Result AS R,dbo.Subject AS G 
  WHERE S.StudentNo=R.StudentNo AND R.SubjectId=G.GradeId 
 
  --年级编号为1的年级名称,科目名称及学时
  SELECT J.GradeId AS 年级, j.SubjectName AS 科目,j.ClassHour AS 学时 
  FROM dbo.Student AS s,dbo.Subject AS j 
  WHERE s.GradeId=j.GradeId AND  j.GradeId='1'
 
  --学号为 S1101007 的学生参加的考试科目名称,分数,考试日期
	SELECT  s.StudentNo,j.SubjectName,r.StudentResult,r.ExamDate 
  FROM dbo.Subject AS j,dbo.Result AS r ,dbo.Student AS s 
  WHERE s.StudentNo=r.StudentNo AND s.GradeId=j.GradeId AND s.StudentNo='S1101007'
  
  --学生学号,科目名称,分数,考试日期
  SELECT  s.StudentNo,j.SubjectName,r.StudentResult,r.ExamDate 
  FROM dbo.Student AS s,dbo.Subject AS j,dbo.Result AS r 
  WHERE s.StudentNo=r.StudentNo AND j.SubjectId=r.SubjectId
  
  
  --查询学生学号,姓名,考试科目名称及成绩
  SELECT s.StudentNo,s.StudentName,b.SubjectName,r.StudentResult 
  FROM dbo.Student AS s,dbo.Result AS r,dbo.Subject AS b 
  WHERE s.StudentNo=r.StudentNo AND b.SubjectId=r.SubjectId
  
  --查询'设计MySchool数据库'考试的学生姓名,成绩,考试日期
  SELECT s.StudentNo,s.StudentName,b.SubjectName,r.StudentResult,r.ExamDate 
  FROM dbo.Student AS s,dbo.Result AS r,dbo.Subject AS b 
  WHERE s.StudentNo=r.StudentNo AND b.SubjectId=r.SubjectId AND b.SubjectName='设计MySchool数据库'
  

猜你喜欢

转载自blog.csdn.net/qq_45155377/article/details/102677097