2013-08-26 105 views
0

這裏是我的問題:排行學生和平均

  1. 如果一個學生得到的分數爲49及以下的任何問題,他將不會被列入排名。

  2. 那些學生誰將會在所有科目取得上述49依照設爲排序他們的平均

  3. 而且如果學生獲得平等的平均水平,他們的隊伍應該是平等的。

這裏是我的示例:

Table1      
Student_ID Name Math English Science Average 
    1  Apple 64  49  70  61.00 
    2  Boy  80  79  65  74.67 
    3  Cat  51  78  66  65.00 
    4  Dove  50  76  64  63.33 
    5  Eden  81  88  72  80.33 
    6  Fox  80  79  65  74.67 
    7  Golf  32  88  69  63.00 


Output      
Student_ID Name Math English Science Average RANK 
    1  Apple 64  49  70  61.00 
    2  Boy  80  79  65  74.67  2 
    3  Cat  51  78  66  65.00  3 
    4  Dove  50  76  64  63.33  4 
    5  Eden  81  88  72  80.33  1 
    6  Fox  80  79  65  74.67  2 
    7  Golf  32  88  69  63.00 

這裏是我的查詢:

SELECT 
    tmain.Student_ID, 
    tmain.Name, 
    tmain.Math, 
    tmain.English, 
    tmain.Science, 
    tmain.Average, 
    IIf(sub.RANK=0, Null, sub.RANK) AS RANK 
FROM 
    Table1 AS tmain 
    LEFT JOIN 
    (
     SELECT 
      t1.Student_ID, 
      t1.Average, 
      (
       SELECT Count(*) 
       FROM Table1 AS t2 
       WHERE 
         t2.Math>49 
        AND t2.English>49 
        AND t2.Science>49 
        AND t2.Average>=t1.Average      
      ) AS RANK 
     FROM Table1 AS t1 
     WHERE 
       t1.Math>49 
      AND t1.English>49 
      AND t1.Science>49 
    ) AS sub 
    ON tmain.Student_ID = sub.Student_ID; 

輸出基於查詢:

Output      
Student_ID Name Math English Science Average RANK 
    1  Apple 64  49  70  61.00 
    2  Boy  80  79  65  74.67  3 
    3  Cat  51  78  66  65.00  4 
    4  Dove  50  76  64  63.33  5 
    5  Eden  81  88  72  80.33  1 
    6  Fox  80  79  65  74.67  3 
    7  Golf  32  88  69  63.00 

有人能幫助我如何解決這個問題,輸出跳過第二級

注:Rank值不存儲在表中。

+3

你應該在你解決這裏張貼問題的一種嘗試。你能寫一個查詢來返回任何數據嗎? – dcaswell

+0

Sir @ user814064對不起,我的問題沒有包括我的查詢。我編輯了我的文章,幷包含了我的查詢和輸出。 – nine05

+0

你的#3的每個班都有相同的成績。你想如何解決這個問題?你如何確定誰是#2和誰是#3? –

回答

0

除非我誤解你,這會給你你需要的東西:

SELECT tblStudents.StudentID, 
    tblStudents.SName, 
    tblStudents.Math, 
    tblStudents.English, 
    tblStudents.Science, 
    tblStudents.AvgScore, 
    tblStudents.Rank 
FROM tblStudents 
WHERE 
    (((tblStudents.Math)>49) AND 
    ((tblStudents.English)>49) AND 
    ((tblStudents.Science)>49)) 
ORDER BY tblStudents.AvgScore DESC; 
+1

謝謝你們,但Rank並不存儲在表中。 – nine05

+0

如果您在文章中添加「編輯」一詞,然後顯示編輯,它將有助於我的信譽。 –