2013-11-27 225 views
0

我有一張名爲標記表的表格,我存儲了學生的標記。我希望從每個單元考試中取得20%的分數,每週考試中有30%,期末考試中有50%。所有單元考試,每週考試和期末考試的名稱都存儲在一個名稱爲Name_of_exam的列名下。我可以用如何在單個mysql select語句中使用Multiple where子句?

SELECT regd, 
     Sum(mark_score)/sum(Full_mark)*20 as scored 
FROM marksheet 
WHERE Name_of_exam='First Unit Exam' 
    OR Name_of_exam='Second Unit Exam' 
    OR Name_of_exam='Third Unit Exam' 
GROUP BY regd; 

但問題是,我不知道我怎麼可以拿出大關學生得分的30%:標記的 Where (Name_of_exam='First Weekly Test or Name_of_exam='Second Weekly Test' or Name_of_exam='Third Weekly Test') 和50%的得分Where Name_of_exam='Final Exam'。在同樣的select語句中,我必須做多個where子句。請幫忙。我在這裏也附上了我如何在Excel表格中進行計算。

Image showing marksheet

回答

1

試試這個:

SELECT names, subjects, 
SUM(
    CASE 
    WHEN name_of_exam = 'First Weekly Test' THEN (score/full_marks)*20 
    WHEN name_of_exam = 'First Unit Exam' THEN (score/full_marks)*30 
    WHEN name_of_exam = 'Final Unit Exam' THEN (score/full_marks)*50 
    END) AS scored 
FROM marksheet 
GROUP BY names, subjects 
+0

謝謝。但我還需要包括第二週測試,第三週測試,第二單元測試和第三單元測試。任何你給我的想法。再次感謝。 –

+0

是的,它可行,但我必須對第一週測試,第二週測試和第三週測試進行總結,並取得20%的分數。這個查詢只返回一列評分.. –

+0

所以你不想要一個綜合/總分,你想每個學生 - 主題組3分? –

3

不能使用多個WHERE一部分,但總是可以使用邏輯運算符來連接條件。

WHERE會發現評分結果在你的treshholds:

SELECT regd, names, subjects, 
    sum(score) * (CASE WHEN (Name_of_exam='First Weekly Test or Name_of_exam='Second Weekly Test' or Name_of_exam='Third Weekly Test') THEN 0.2 
     WHEN (Name_of_exam='First Unit Exam' or Name_of_exam='Second Unit Exam' OR Name_of_exam='Third Unit Exam') THEN 0.3 
     WHEN (Name_of_exam='Final Exam') THEN 0.5) 
    AS scored 
FROM marksheet 
GROUP BY regd, names, subjects, test_type 
+2

@Kacer,我很欣賞你的工作,但是這並沒有解決我的問題。如果你仔細閱讀這個問題,你可以看到我想要拿出20%,不少於20,另外我想從第一,第二和第三單元考試總和中拿出30%,當然還有50%考試。請你能寫出更清晰的代碼。到目前爲止,您提供的答案也不是有效的sql語句。 –

相關問題