第三本十一章上机题

SELECT TOP 1000 [StudentNo]
      ,[LoginPwd]
      ,[StudentName]
      ,[Sex]
      ,[GradeId]
      ,[Phone]
      ,[Address]
      ,[BornDate]
      ,[Email]
  FROM [MySchol].[dbo].[Student]
  SELECT GradeId AS 年纪,COUNT(*) AS 人数
  FROM dbo.Student
  GROUP BY GradeId
  SELECT Sex AS 性别,CounT(*)
  FROM dbo.Student
  GROUP BY Sex
  --查询每学期学生的平均年龄
  SELECT AVG(DATEDIFF(dd,BornDate,GETDATE())/365)  as 年龄
  from dbo.Student
  --查询北京地区的每学期学生人数
  SELECT COUNT(GradeId) as 个数,GradeId
    FROM dbo.Student
    WHERE Address LIKE '北京%'
    GROUP BY GradeId
  --查询学生姓名 年级名称 联系电话
  SELECT StudentName,StudentNo,Phone
  FROM dbo.Student
  --查询年级编号为1的年级名称 科目名称及学时
  SELECT s.StudentName,c.SubjectName,c.ClassHour
  from dbo.Student AS s
  INNER JOIN dbo.Subject AS c on(s.GradeId=c.GradeId AND s.GradeId=1)

/****** Script for SelectTopNRows command from SSMS  ******/
SELECT TOP 1000 [Id]
      ,[StudentNo]
      ,[SubjectId]
      ,[StudentResult]
      ,[ExamDate]
  FROM [MySchol].[dbo].[Result]
    --查询参加考试的学生中 平均分及格的学生记录,并成绩降序排列
   SELECT avg(StudentResult)
   FROM dbo.Result
   GROUP BY StudentResult
   HAVING avg(StudentResult)>60
   ORDER BY StudentResult DESC
   
   --查询考试日期为2013-2-22的课程及格平均分
   SELECT avg(StudentResult) ,SubjectId 
    FROM dbo.Result 
    where ExamDate='2013-03-22'
    GROUP BY SubjectId 
     HAVING AVG(StudentResult)>60
     
  --查询至少一次考试不及格的学生学号, 不及格次数
  SELECT StudentNo, Count(*)as 次数
  from dbo.Result
  where StudentResult<60
  group by StudentNo
  --平均分
  SELECT AVG(StudentResult)
  FROM dbo.Result
  --没门课程的平均分
  SELECT  AVG(StudentResult)AS 平均分,SubjectId AS 课程
  from dbo.Result
   GROUP BY  SubjectId
    ORDER BY 平均分 desc
    --查询每个学生参加的所有的考试成绩 降序
    SELECT  SUM(StudentResult) AS 所有考试的和,StudentNo  
    from dbo.Result
    GROUP BY  StudentNo
    ORDER BY 所有考试的和 desc
    --查询参加科目编号为1的考试的学生姓名 分数 考试日期
  select s.StudentName,c.StudentResult,c.ExamDate
  from dbo.Student AS s
   INNER JOIN dbo.Result AS c on(s.StudentNo=c.StudentNo)
   where  s.GradeId=1
   --查询学号为S1101007 的学生参加的考试科目名称  分数  日期
   SELECT C.GradeId,S.StudentResult,S.ExamDate,C.SubjectName
   FROM dbo.Result as S 
   INNER JOIN dbo.Subject as C on(s.SubjectId=c.SubjectId)
   WHERE [StudentNo]='S1101007'
   --查询参加考试的学生学号 所考科目名称 分数 考试日期
   SELECT S. [StudentNo],C.[SubjectName],[StudentResult],[ExamDate]
   from [dbo].[Result] AS S,[dbo].[Subject] as C
   where S.[SubjectId]=C.[SubjectId]
   --查询学生学号 姓名 考试科目名称 成绩
   SELECT S. [StudentNo],A.[StudentName],C.[SubjectName],[StudentResult]
   FROM [dbo].[Result]AS S,[dbo].[Subject] as C,[dbo].[Student] as A
   where  S.[SubjectId]=C.[SubjectId] AND A.studentNo=S.studentNo
   --查询所有科目的参考信息
   SELECT J.[SubjectName] AS 科目名称, R.[StudentResult] as 成绩,R.[StudentNo] AS 学号
  FROM Result AS R
RIGHT OUTER JOIN Subject AS J
ON J.SubjectId=R.SubjectId

--查询没有被考过的科目信息。

SELECT J.SubjectName AS 科目名称
FROM Result AS R
RIGHT OUTER JOIN Subject AS J
ON J.SubjectId=R.SubjectId
WHERE R.StudentResult IS NULL AND R.StudentNo IS NULL


 

/****** Script for SelectTopNRows command from SSMS  ******/
SELECT TOP 1000 [SubjectId]
      ,[SubjectName]
      ,[ClassHour]
      ,[GradeId]
  FROM [MySchol].[dbo].[Subject]
   --每个年纪的总学时 
  SELECT  SUM(ClassHour)as 总学时,GradeId
  FROM [MySchool].[dbo].[Subject]
   GROUP BY GradeId
  ORDER BY 总学时
  --查询每学期学时超过50的课程数
  SELECT COUNT(ClassHour) as 课程数,GradeId AS 学期
  FROM dbo.Subject
  WHERE ClassHour>50
  GROUP BY GradeId
  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章