Доступ к SQL в среднем три столбца - PullRequest
0 голосов
/ 03 мая 2011

У меня есть следующие таблицы:

Table 1
Student , Exam_ID
1      1      
2      1     
3      2     
1      2     
3      3     
2      3     
3      4     
1      4  

Table 2
Exam ID, Mark
(1   , 5)
(2 ,   4)
(3  ,  4)
(4 ,   5)

Table 3
Exam ID, Teacher's review
(1,3)
(2,5)
(3,4)
(4,2)

Table 4
Exam_ID, Start_Time, End_Time
(1,2:00:00,3:50:00)
(2,2:00:00,4:00:00)
(3,3:00:00,5:20:00)
(4,3:00:00,5:00:00)

каждый экзамен решается парами студентов ... я хочу иметь возможность усреднять оценки, обзор Учителя, всех экзаменов, сданных каждой паройстудент, например: экзамены 2 и 4 сдают одна и та же пара студентов (3,1). Я хочу иметь возможность усреднять оценки за те 2 экзамена, которые (4,5) = 4,5 и оценка учителя (5,2) = 3,5, а затем оцените эти пары от наивысшей до самой низкой оценки и оценки учителя и сможете рассчитать разницу между временем начала и окончания для каждого экзамена, а также учесть это в рейтинге, чтобы требуемая таблица была такой:

StudentA, StudentB, AverageMark, AverageTeacher'sReview, AverageExamDuration
( 3,       1,        4.5,           3.5,                     2:00:00)

и т. Д.

Смежный вопрос: среднее число строк в столбце при доступе

спасибо

1 Ответ

0 голосов
/ 03 мая 2011

Звучит как домашнее задание, вероятно,! = В первом соединении - это то, чему вы должны научиться, если это так.

select A.StudentId as StudentA, 
B.StudentId as StudentB,
AVG(Mark) as AvgMark,
AVG(review) as AvgReview, 
AVG(DATEDIFF(MINUTE,StartTime,EndTime)) as AvgTime
from StudentToExam A 
inner join StudentToExam B on A.ExamId = B.ExamId and A.StudentId != B.StudentId
inner join ExamToMark M on A.ExamId = M.ExamId
inner join ExamToReview R on A.ExamId = R.Review
inner join ExamDuration D on D.ExamId = A.ExamId
GROUP BY A.StudentId, B.StudentId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...