Вот еще одна проблема, с которой мне приходилось сталкиваться в последние пару дней.У меня есть следующий запрос:
SELECT S.Name,S.Surname,S.Student_ID,S.StudentNumber,C.Course, B.Campus_Title,M.Module,SM.Percentage_Obtained,S.Days_Absent
FROM Students S
INNER JOIN Student_Courses SC
ON SC.StudentID = S.ID
INNER JOIN Courses_Template C
ON C.ID = SC.courseID
INNER JOIN Branches B
ON B.ID = S.BranchID
INNER JOIN Student_Modules SM ON
SM.StudentID =S.ID
INNER JOIN Modules_Template M ON
M.ID = SM.ModuleID
Проблема в том, что я хочу переписать запрос, чтобы получить расчетный результат, подобный этому:
SELECT S.Name,S.Surname,S.Student_ID,S.StudentNumber,C.Course, B.Campus_Title,M.Module,SM.Percentage_Obtained,S.Days_Absent,
(SELECT AVG(Percentage_Obtained)
FROM Student_Modules
INNER JOIN Courses_Template
ON Courses_Template.ID = Student_Modules.CourseID
INNER JOIN Modules_Template
ON Courses_Template.ID = Modules_Template.CourseID
WHERE Modules_Template.Module= M.Module)[AS Class Average]
FROM Students S
INNER JOIN Student_Courses SC
ON SC.StudentID = S.ID
INNER JOIN Courses_Template C
ON C.ID = SC.courseID
INNER JOIN Branches B
ON B.ID = S.BranchID
INNER JOIN Student_Modules SM ON
SM.StudentID =S.ID
INNER JOIN Modules_Template M ON
M.ID = SM.ModuleID
Исходные значения для модулей ((извлечено)
M.Modules AVG(Percentage_Obtained)
Module 1 99
Module 2 98
Module 3 94
Module 1 94
Module 2 22
Module 3 100
Ожидаемые результаты, которые я хотел получить от второго запроса, были следующие:
M.Modules AVG(Percentage_Obtained) (SubQuery's Average)
Module 1 99 97
Module 2 98 60
Module 3 94 96
Module 1 94 97
Module 2 22 60
Module 3 100 96
, однако то, что он мне дал, было совершенно другиможидаемые результаты, которые я хотел получить от второго запроса, были следующие:
M.Modules AVG(Percentage_Obtained) (SubQuery's Average)
Module 1 99 84
Module 2 98 84
Module 3 94 84
Module 1 94 84
Module 2 22 84
Module 3 100 84
Может кто-нибудь где-нибудь заметить мою ошибку?Мне нужны все эти поля в одном запросе, потому что я должен сделать отчет по нему.Результаты подзапроса имеют решающее значение
Это почти как мне нужно (но динамически для всех повторений модуля):
SELECT AVG(Percentage_Obtained)
FROM Student_Modules
INNER JOIN Modules_Template ON Modules_Template.ID = Student_Modules.ModuleID
WHERE Modules_Template.Module = 'Module 1' -- And module 2, and module 3 .... but Dynamically