SQL er god til at arbejde med sæt af dataværdier i databasen, men ikke så god til sæt af dataværdier, der er ikke i databasen.
Den bedste løsning er at beholde en lille tabel for de værdier, du skal bruge:
CREATE TABLE ScoreValues (score int);
INSERT INTO ScoreValues (score)
VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
I betragtning af din kommentar om, at du definerer de maksimale karakterer for en test i en anden tabel, kan du slutte dig til den tabel på følgende måde, så længe ScoreValues
er sikker på at have værdier, der er mindst lige så høje eller højere end den største tests maks. point:
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;