2011-05-03 91 views
0

我有以下表格:訪問SQL平均三列

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)考取的,我希望能夠對那些(4,5)= 4.5和教師評論( 5,2)= 3.5 ,然後按照從最高分到最低分和老師的評論排列這些對,並且能夠計算每次考試的開始和結束時間之間的差異,並將其包括在排名中以及 ,因此所需的表格將會像:

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

相關問題:average-multiple-rows-in-a-column-in-access

謝謝

+2

功課?如果是這樣,請添加作業標籤。 – Jody 2011-05-03 00:27:52

回答

0

聽起來像功課,在=在第一個連接,可能是你應該學習若然!

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 
+0

它說在FROM子句 – Tantoon 2011-05-03 12:44:13

+0

中有一個錯誤,它突出顯示A – Tantoon 2011-05-03 13:15:04

+0

@Tantoon:查詢是正確的(幾乎),但Access對於如何編寫查詢是挑剔的。你有兩個選擇。在內部連接中使用括號或將Access選項更改爲僅接受SQL Server兼容語法(ANSI 92)。這將需要在該語法中包含所有查詢。 – 2011-05-04 21:13:49