我有一个查询:
select score, count(1) as 'NumStudents' from testresults where testid = 'mytestid' group by score order by score
其中 testresults 表包含学生在测试中的表现。假设测试的最高分数为 10,示例结果如下所示。
分数,NumStudents
0 10
1 20
2 12
3 5
5 34
..
10 23
如您所见,此查询不返回任何没有学生得分的记录。例如。没有人在测试中得分 4/10,并且查询输出中没有 score = 4 的记录。
我想更改查询,以便我可以获取这些缺失记录,其中 0 作为 NumStudents 字段的值。这样我的最终输出将有 max + 1 条记录,每个可能的分数都有一条。
有任何想法吗 ?
编辑:
数据库包含几个测试,测试的最高分数是测试定义的一部分。所以有一个新的表来存储所有可能的分数是不可行的。从某种意义上说,每当我创建一个新的最高分数的新测试时,我需要确保新表也应该更改为包含这些分数。