2011-05-02 6 views
1

나는 다음과 같은 테이블이 각 시험은 학생들의 쌍에 의해 해결된다평균 여러 행이

 
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) 

을 ... 난 각 취한 모든 시험의 표를 평균 할 수 있도록하려면 학생 쌍 : 예 2와 4는 동일한 학생 쌍 (3,1)에서 뽑았습니다. 나는 (4,5) = 4.5 인 2 개의 시험에 대한 점수를 평균하고 싶습니다. 쌍의 가장 높은 것부터 가장 낮은 것까지 감사합니다.

어떻게 첫 번째 테이블에 First_Name과 Surname을 포함시킬 수 있습니까?

답변

0
SELECT 
    a.Student AS studentA 
    , b.Student AS studentB 
    , AVG(T2.Mark) AS averageMark 
FROM (T2 
     INNER JOIN T1 AS a 
      ON a.Exam_ID = T2.Exam_ID 
    ) 
     INNER JOIN T1 AS b 
      ON a.Exam_ID = b.Exam_ID 
      AND a.Student < b.Student 
GROUP BY a.Student 
     , b.Student 
ORDER BY AVG(T2.Mark) DESC 

나이 :

SELECT 
    a.Student AS studentA 
    , b.Student AS studentB 
    , AVG(T2.Mark) AS averageMark 
FROM (T1 AS a 
     INNER JOIN T1 AS b 
      ON a.Exam_ID = b.Exam_ID 
      AND a.Student < b.Student 
    ) 
     INNER JOIN T2 
      ON a.Exam_ID = T2.Exam_ID 
GROUP BY a.Student 
     , b.Student 
ORDER BY AVG(T2.Mark) DESC 

어떻게 작동하는지 더 분명하다. 괄호 안의 JOIN은 커플을 찾은 다음 JOIN은 두 번째 Marks 테이블에 커플을 연결합니다.

+0

그것은 작동하지 않았습니다. – Tantoon

+0

무엇을 의미합니까? 어떤 오류가 있습니까? –

+0

select의 단어가 예약되어 있거나 철자가 틀린 것으로 강조 표시됩니다. b. 학생 – Tantoon