2016-02-05 30 views
0

我做了一個查詢,顯示每個用戶對每個部門的回答數量以及每個用戶回答該部門問題時的正確和不正確的百分比。如何計算單個查詢中每個用戶的百分比?

於是,我嘗試這樣的查詢,

SELECT d.department_id, d.department_name as department, 
     a.username, COUNT(a.username)total, 
     ( (COUNT(r.is_correct)*100)/
       ( SELECT COUNT(a.username) total 
        FROM qa_report r 
        LEFT JOIN tbl_user a ON (r.user_id = a.admin_id) 
        LEFT JOIN department d on (a.department_id = d.department_id) 
        WHERE d.department_name = 'Dept1' AND is_correct='yes' 
      ) 
     ) as correct_percent 
FROM qa_report r 
LEFT JOIN tbl_user a ON (r.user_id = a.admin_id) 
LEFT JOIN department d on (a.department_id = d.department_id) 
WHERE d.department_name = 'Dept1' 
GROUP BY a.username 

這是結果,

query result

total列是問題的答案是用戶回答該部門的數量。

在這total,正確和不正確的答案是混合。

但是當我嘗試計算每個部門的正確/不正確的百分比時,correct_percent列仍然是錯誤的。

的問題是在這條線,

( (COUNT(r.is_correct)*100)/
      ( SELECT COUNT(a.username) total 
       FROM qa_report r 
       LEFT JOIN tbl_user a ON (r.user_id = a.admin_id) 
       LEFT JOIN department d on (a.department_id = d.department_id) 
       WHERE d.department_name = 'Dept1' AND is_correct='yes' 
     ) 
    ) as correct_percent 

我需要像這樣的地方,讓每一個用戶的正確的百分比,

(correct percent of answer*100)/total question that user answer eg. John => total: 10, correct 5, incorrect 5, correct %=50%

任何建議,我非常感激。

+0

請發表所有相關的表格結構。 – 1000111

+0

謝謝,現在我可以解決它。 – Cloud

回答

1

我現在可以解決這個問題。當我嘗試計算百分比時,我錯了。 這是查詢工作,

SELECT d.department_id, d.department_name as department, 
    a.username, COUNT(a.username)total, 
    ( (COUNT(CASE WHEN r.is_correct='yes' THEN 1 END)*100)/(COUNT(a.username))) as correct_percent, 
    ( (COUNT(CASE WHEN r.is_correct='no' THEN 1 END)*100)/(COUNT(a.username))) as incorrect_percent 
FROM qa_report r 
LEFT JOIN tbl_user a ON (r.user_id = a.admin_id) 
LEFT JOIN department d on (a.department_id = d.department_id) 
WHERE d.department_name = 'Dept1' 
GROUP BY a.username 

希望這對某人的幫助。