当前位置: 代码迷 >> Sql Server >> 请教下这个题目的 4 6如何写
  详细解决方案

请教下这个题目的 4 6如何写

热度:92   发布时间:2016-04-24 10:09:11.0
请问下这个题目的 4 6怎么写
SQL题:
有表:
① 班级表(班级编码、班级名称)、
② 学生表(学生编码、学生名称、性别、年龄、班级编码)、
③ 程表(课程编码、课程名称)、
④ 绩表(学生编码、课程编码、成绩)
请回答以下问题:
1、 写出创建以上表及索引的SQL
2、 写出每个班级的最大年龄最小超龄的学生名称
3、 写出每个班级的学生数、男生数、女生数
4、 写出每个班级平均成绩、最高成绩、最低成绩
5、 给学生成绩低于65分大于60分的,增加3分
6、 写出每个班级平均成绩最好与最差的课程及分数
7、 写出没有被选读的课程名称
脑袋疼  4 6 求帮助
50分一个
------解决方案--------------------
4.avg,max,min
6.嵌套查询,先查avg,在结果中查max和min
------解决方案--------------------
去查SQL 函数吧
平均函数 Avg
求最大值函数 Max
求最小值函数 Min

分组 group by

把这些函数弄懂了 你也就能解决这些问题了,先自己尝试一下吧。盆友
------解决方案--------------------
select avg(成绩),max(成绩),min(成绩) from 成绩表

------解决方案--------------------
select a.Class_Name,max(c.Score_Number) as 最好成绩,min(c.Score_Number) AS 最差成绩,d.Course_Name from dbo.ClassInfo as a,dbo.StudentInfo as b,dbo.ScoreInfo as c,dbo.CourseInfo  as d
where a.Class_id=b.Class_id and b.Student_id=c.Student_ID and d.Course_id=c.Course_ID
group by a.Class_Name,d.Course_Name 
   
------解决方案--------------------



select A.classname,Z.*  from 
  
Class A  inner join
(
select t.classId,
maxcouseID=(select CourseID from (select B.classId,A.CourseID, avg(A.markscore) 平均成绩 from dbo.Mark  A inner join dbo.Student  B on
A.studnetId=B.studnetId
group by A.CourseID,B.classId) c where C.classId =t.classId and 平均成绩=MAX(t.平均成绩)),
最高分=MAX(t.平均成绩),
mincouseID=(select CourseID from (select B.classId,A.CourseID, avg(A.markscore) 平均成绩 from dbo.Mark  A inner join dbo.Student  B on
A.studnetId=B.studnetId
group by A.CourseID,B.classId) c where C.classId =t.classId and 平均成绩=MIN(t.平均成绩)),
最低分=MIN(t.平均成绩)
from (
select B.classId,A.CourseID, avg(A.markscore) 平均成绩 from dbo.Mark  A inner join dbo.Student  B on
A.studnetId=B.studnetId
group by A.CourseID,B.classId
 )  t
group by t.classId
) Z ON A.classID=Z.classId

  相关解决方案