SQL题:
有表:
① 班级表(班级编码、班级名称)、
② 学生表(学生编码、学生名称、性别、年龄、班级编码)、
③ 程表(课程编码、课程名称)、
④ 绩表(学生编码、课程编码、成绩)
请回答以下问题:
1、 写出创建以上表及索引的SQL
2、 写出每个班级的最大年龄最小超龄的学生名称
3、 写出每个班级的学生数、男生数、女生数
4、 写出每个班级平均成绩、最高成绩、最低成绩
5、 给学生成绩低于65分大于60分的,增加3分
6、 写出每个班级平均成绩最好与最差的课程及分数
7、 写出没有被选读的课程名称
2 4 6 不会写 有没谁教我下.
感觉这3个有点复杂。
http://bbs.csdn.net/topics/390859766?page=1#post-397983474
这还有个帖子 一起结贴 就这三个就可以了.
------解决方案--------------------
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