SQL pandai bekerja dengan kumpulan nilai data dalam database, tetapi tidak begitu baik dalam kumpulan nilai data yang tidak dalam basis data.
Solusi terbaik adalah menyimpan satu tabel kecil untuk nilai yang Anda perlukan untuk rentang:
CREATE TABLE ScoreValues (score int);
INSERT INTO ScoreValues (score)
VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
Mengingat komentar Anda bahwa Anda menentukan nilai maksimum dari pengujian di tabel lain, Anda dapat bergabung ke tabel itu dengan cara berikut, selama ScoreValues
pasti memiliki nilai setidaknya setinggi atau lebih tinggi dari nilai maksimal ujian terbesar:
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;