http://bbs.csdn.net/topics/390859869
这里还有100分,只求答案.

解决方案 »

  1.   

    都是聚合函数的东西啊 无非就 max min avg 之类的...
      

  2.   

    CREATE TABLE [dbo].[Class](
    [classID] [int] IDENTITY(1,1) NOT NULL,
    [classname] [nvarchar](50) NULL,
    PRIMARY KEY CLUSTERED 
    (
    [classID] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    CREATE TABLE [dbo].[Course](
    [CourseID] [int] IDENTITY(1,1) NOT NULL,
    [CourseName] [nvarchar](50) NULL,
    PRIMARY KEY CLUSTERED 
    (
    [CourseID] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    CREATE TABLE [dbo].[Mark](
    [studnetId] [int] NULL,
    [CourseID] [int] NULL,
    [score] [decimal](18, 2) NULL
    ) ON [PRIMARY]CREATE TABLE [dbo].[Student](
    [studnetId] [int] IDENTITY(1,1) NOT NULL,
    [studentName] [nvarchar](50) NULL,
    [sex] [nvarchar](2) NULL,
    [age] [nvarchar](3) NULL,
    [classId] [int] NULL,
     CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED 
    (
    [studnetId] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]这是个5列结果
       班级  最好课程成绩    成绩    最差成绩课程   成绩
    我的思路是先求平均成绩  再求最高的平均成绩 和最差的平均成绩  放在一起  没写出来.
      

  3.   

    select A.classname,Z.*  from 
      
    Class A  inner join
    (
    select t.classId,
    maxcouseID=(select CourseID from (select B.classId,A.CourseID, avg(A.score) 平均成绩 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.score) 平均成绩 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.score) 平均成绩 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