SQL хорош для работы с наборами значений данных в базе данных, но не так хорош для наборов значений данных, которые не в базе данных.
Лучший обходной путь - сохранить одну маленькую таблицу для значений, которые вам нужно выбрать:
CREATE TABLE ScoreValues (score int);
INSERT INTO ScoreValues (score)
VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
Учитывая ваш комментарий о том, что вы определяете максимальные оценки теста в другой таблице, вы можете присоединиться к этой таблице следующим образом, при условии, что ScoreValues
обязательно будет иметь значения, по крайней мере, такие же высокие или более высокие, чем самые большие максимальные оценки теста:
SELECT v.score, COUNT(tr.score) AS 'NumStudents'
FROM ScoreValues v
JOIN Tests t ON (v.score <= t.maxmarks)
LEFT OUTER JOIN TestResults tr ON (v.score = tr.score AND t.testid = tr.testid)
WHERE t.testid = 'mytestid'
GROUP BY v.score;