2014-03-31 25 views
0

我有一張表格,其中包含教師列表,他們正在教授的課程,以及有多少學生通過,有多少學生失敗。如何比較不同行的列值與SQL

Teacher-ID  Class   Pass/Fail  Count 
------------------------------------------------------- 
1    English  Pass   15 
1    English  Fail   5 
1    Math   Pass   20 
1    Math   Fail   10 
2    Science  Pass   15 
2    Science  Fail   10 
2    Spanish  Pass   20 
2    Spanish  Fail   8 

我想要做的是得到一個百分比爲每個老師和班級組合多少學生失敗。

Teacher-ID  Class   % Failed 
------------------------------------------------------- 
1    English  25% 
1    Math   33% 
2    Science  40% 
2    Spanish  29% 

我難倒就如何使用SQL來做到這一點。

回答

2

這裏是你可以使用查詢:

SELECT 
    TeacherID, 
    Class, 
    SUM(CASE WHEN PassFail = 'Fail' THEN Count ELSE 0 END) * 100.0 /SUM(Count) as FailPersent 
FROM tbl 
GROUP BY TeacherID, Class 
+0

我得到'不能對包含聚合或subquery.'當我嘗試運行此的表達式執行聚合函數。我正在使用SQL Server。 – webworm

+0

另外,我不需要使用'COUNT(*)'而不是'COUNT'嗎? – webworm

+1

我不知道你有什麼嘗試,但這裏是一個小提琴演示http://sqlfiddle.com/#!3/cb6e5e/1 –

相關問題