2013-10-03 38 views
-1

我有這個疑問,我需要改變它來尋找和的最大值(StudentMark)查找總和的最大值使用SQL Server

SELECT Users.UserID, 
     ClassCourses.CourseID, 
     sum(StudentMark)SumOFMarks 
FROM Users 
     INNER JOIN UserExams 
      ON Users.UserID = UserExams.UserID 
     INNER JOIN Exams 
      ON UserExams.ExamID = Exams.ExamID 
     INNER JOIN ClassCourses 
      ON Exams.ClassID = ClassCourses.ClassID 
      AND Exams.CourseID = ClassCourses.CourseID 
GROUP BY Users.UserID, 
     ClassCourses.CourseID 
+3

有什麼問題嗎? – CodingIntrigue

回答

3

包裝這在CTE和查詢CTE:

;WITH MyCTE AS 
(
    SELECT Users.UserID, 
      ClassCourses.CourseID, 
      sum(StudentMark)SumOFMarks 
    FROM Users 
      INNER JOIN UserExams 
       ON Users.UserID = UserExams.UserID 
      INNER JOIN Exams 
       ON UserExams.ExamID = Exams.ExamID 
      INNER JOIN ClassCourses 
       ON Exams.ClassID = ClassCourses.ClassID 
       AND Exams.CourseID = ClassCourses.CourseID 
    GROUP BY Users.UserID, 
      ClassCourses.CourseID 
) 
SELECT MAX(SumOFMarks) 
FROM MyCTE 
0

這工作好

Create procedure [dbo].[MaxMinMarks] 
(
@pClassID int 
) 
as 
--check if the table exists then if true delete it because we'll create it every time the SP run 
IF EXISTS (SELECT * 
       FROM INFORMATION_SCHEMA.TABLES 
       WHERE 
        TABLE_NAME = 'StudentMarks') 
       drop table StudentMarks 
SELECT ClassCourses.ClassID,ClassCourses.CourseID,ClassCourses.MaxMark,sum(StudentMark)SumOFMarks 
--store result into new table 
into StudentMarks 
FROM   Users INNER JOIN 
         UserExams ON Users.UserID = UserExams.UserID INNER JOIN 
         Exams ON UserExams.ExamID = Exams.ExamID INNER JOIN 
         ClassCourses ON Exams.ClassID = ClassCourses.ClassID AND Exams.CourseID = ClassCourses.CourseID 
         where [email protected] 
        group by Users.UserID, ClassCourses.ClassID,ClassCourses.CourseID,ClassCourses.MaxMark 
--useing the new table we can find max and min marks 
select ClassID,CourseID,MaxMark,max(SumOFMarks) highestMark,min(SumOFMarks)LowestMark from StudentMarks 
group by ClassID,CourseID,MaxMark