【发布时间】:2012-05-01 21:32:26
【问题描述】:
我正在尝试列出学生及其考试效率。
在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
示例: Joe 和 Anna 被邀请参加课程 1 和课程 2,Marry 和 Max 被邀请只参加课程 1。Joe 参加了课程 1 但没有参加课程 2,Marry 没有参加任何事情,Max 做了课程 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
示例:Joe 做了第一门课程的 3 个问题。请注意,他没有完成该课程的所有问题,而且其中一个是不正确的。
Max 做的所有问题都正确,Anna 完成了第一道菜的所有问题(一半不正确)和第二道菜的一半(所有正确)
我需要一个查询,其中包含学生姓名、完成课程的百分比、他们完成的课程的正确答案百分比(不是所有课程)以及按这些百分比对学生进行排序的可能性。 像这样的:
name | completed courses | completed questions
______________________________________________
Max |100% |100%
Anna |100% |50%
Joe |50% |50%
Marry |0% |0%
这样的事情可能吗?我是否需要在表中添加更多行才能进行此查询?
【问题讨论】:
标签: mysql count left-join percentage cross-join