2013-03-05 39 views
1

下面是一個例子表:MySQL |從和中減去COUNT用不同的WHERE子句

quizzes 

id user_id quiz_id has_passed attempts 
1  101  201  0    5   
2  101  202  1    1 
3  102  201  1    3 
4  103  203  1    2 

我有兩個疑問,我想結合來獲得競猜失敗嘗試的次數。

第一個查詢獲取所有的嘗試對於每次測驗的總和:

SELECT quiz_id, SUM(attempts) as sum 
FROM quizzes 
GROUP BY quiz_id 

第二查詢獲取計數測驗已通過的次數:我想減去

SELECT quiz_id, COUNT(*) as count 
FROM quizzes 
WHERE has_passed =1 
GROUP BY quiz_id 

嘗試獲取由quiz_id分組的失敗嘗試次數的總嘗試次數。

什麼查詢會給我一個看起來像這樣的輸出?

quiz_id failed_attempts  
201  7 
202  0 
203  1 

謝謝!

回答

5
SELECT quiz_id, SUM(attempts - has_passed) failed_attempts 
FROM quizzes 
GROUP BY quiz_id 

輸出

| QUIZ_ID | FAILED_ATTEMPTS | 
----------------------------- 
|  201 |    7 | 
|  202 |    0 | 
|  203 |    1 | 

sqlfiddle

1

你可以寫:

SELECT quiz_id, 
     SUM(attempts) - COUNT(CASE WHEN has_passed = 1 THEN 1 END) 
     AS failed_attempts 
    FROM quizzes 
GROUP 
    BY quiz_id 
; 
0

我認爲你正在尋找:

SELECT quiz_id, SUM(attempts) AS attempts, SUM(attempts-has_passed) AS failed_attempts 
FROM quizzes 
GROUP BY quiz_id 
0

試試下面

選擇quiz_id,(SUM(未遂) - COUNT(*))從測驗失敗的嘗試 集團通過quiz_id