我有以下两个表:
test_data:
| 问题ID|应答ID|有效| valid |
| --|--|--| ------------ |
| q1| a1|真的| true |
| q1| A2|真的| true |
| q1| A3|假的| false |
| q1| A4|假的| false |
| q2| A5|真的| true |
| q2| A6|假的| false |
| q3| A7|真的| true |
| q3| A8|假的| false |
| q3| A9|假的| false |
| 四季度|A10|假的| false |
| 四季度|A11|假的| false |
| 四季度|a12|真的| true |
user_answers:
| 测试ID|问题ID|给定答案ID| given_answer_id |
| --|--|--| ------------ |
| t1| q1| a1| a1 |
| t1| q1| A3| a3 |
| t1| q2| A6| a6 |
| t2|四季度|A10| a10 |
| t2|四季度|a12| a12 |
我想得到以下结果:
| 测试ID|问题正确计数|问题错误计数| question_wrong_count |
| --|--|--| ------------ |
| t1|一个|二个| 2 |
| t2| 0个|一个| 1 |
| t1| 0个|三个| 3 |
| t2|一个|0个| 0 |
我的想法是test_data left join user_answers
,然后继续group by user_id, test_id
并执行所有的条件计数。
但是用户不需要回答所有问题,所以我在user_id
列中有一些问题的NULL
。缺失的测试或未回答的问题将被视为错误。举例来说:
u2
没有完成t1
,所以t1
为u2
hs 3个错误的问题。测试包含3个问题。u1
没有回答t1
的q3
,因此q3
计数为错误。u1
确实在q1
中回答了a1
和a3
,但即使a1
是正确的,他也选择了a3
而不是a2
,所以这是错误的,所以q1
也是错误的。u1
为t2
的q4
选择了错误的答案,因此他的t2
有1个错误的问题(测试只有一个问题)
如何为user_answers
表中的每个用户填充缺少的数据?
1条答案
按热度按时间nlejzf6q1#
参见示例
字符串
| 测试ID|正确计数|错误计数|试题数量|有效|无效|未回答| notanswered |
| --|--|--|--|--|--|--| ------------ |
| t1|一个|二个|三个|一个|一个|一个| 1 |
| t2| 0个|一个|一个|0个|一个|0个| 0 |
| t1| 0个|三个|三个|0个|0个|三个| 3 |
| t2|一个|0个|一个|一个|0个|0个| 0 |