我試圖列出學生及其測試效率。 在MySql
數據庫我有表MySql查詢 - 計算行數和百分比
users
- 表與學生
id | name
_________
1 | Joe
2 | Marry
3 | Max
4 | Anna
----------
courses
- 表課程
id | name
_____________
1 | Course 1
2 | Course 2
----------
questions
- 以每門課程的問題表。行cours_id表示這當然這個問題屬於
id | cours_id | question
_________________________________
1 | 1 | Course 1 - question 1
2 | 1 | Course 1 - question 2
3 | 1 | Course 1 - question 3
4 | 1 | Course 1 - question 4
5 | 2 | Course 2 - question 1
6 | 2 | Course 2 - question 2
7 | 2 | Course 2 - question 3
8 | 2 | Course 2 - question 4
cours_invitations
- 每個學生得到邀請爲一療程。行user_id顯示被邀請參加課程的用戶的ID。 cours_id代表學生應該做的課程的ID。 當行狀態的值爲0時,表示學生沒有開始課程(待定),如果它的值爲1,表示學生已經開始(或完成)。
id | user_id | cours_id | status
________________________________
1 | 1 | 1 | 1
2 | 1 | 2 | 0
3 | 2 | 1 | 0
4 | 3 | 1 | 1
5 | 4 | 1 | 1
6 | 4 | 2 | 1
例子:喬和安娜被邀請做課程1和課程2,結婚和Max被邀請做唯一的辦法1.喬做了場1,但當然不是2,結婚沒做什麼和馬克思課程1
courses_stats
- 是學生已經完成的課程的問題的統計數字。狀態代表答案的準確性。 0代表錯誤答案,1代表正確答案。
id | user_id | question_id | status
___________________________________
1 | 1 | 1 | 1
2 | 1 | 2 | 1
3 | 1 | 3 | 0
4 | 2 | 1 | 1
5 | 2 | 2 | 1
6 | 2 | 3 | 1
7 | 2 | 4 | 1
8 | 4 | 1 | 1
9 | 4 | 2 | 1
10 | 4 | 3 | 0
11 | 4 | 4 | 0
12 | 4 | 5 | 1
13 | 4 | 6 | 1
例子:喬的確從他並沒有這樣做從該課程所有問題的第一course.Notice 3個問題,那種是不正確。
馬克斯做了所有的問題,正確的和安娜做了所有的問題,從第一場(一半是不正確的),另一半來自第二期培訓班(正確)
我需要sudents名稱,成品課程perecentage,百分比查詢他們所做的那些課程的正確答案(並非全部課程)以及按這些百分比命令學生的可能性。 事情是這樣的:
name | completed courses | completed questions
______________________________________________
Max |100% |100%
Anna |100% |50%
Joe |50% |50%
Marry |0% |0%
是這樣甚至可能嗎?這個查詢在表格中是否需要更多行?
快速的答案和很好的查詢。 – 2012-04-22 15:08:20
謝謝。原來有點不對。需要'LEFT JOIN's就像你在你的答案何況還要對'ON'一個額外的一部分,以確保其只計算用戶已經開始的課程(例如問題,Joe的完成問題,需要爲50%,而不是25% ) – MichaelRushton 2012-04-22 15:15:19
完美,你是對的。你可能想添加'ifnull(...,0)AS completed_questions',因爲結婚的競爭問題將爲空,否則顯示0可能會更好。 – 2012-04-22 15:28:59