SQL je dobrý v práci se sadami datových hodnot v databázi, ale ne tak dobrý v sadách datových hodnot, které nejsou v databázi.
Nejlepším řešením je ponechat si jednu malou tabulku pro hodnoty, které potřebujete překročit:
CREATE TABLE ScoreValues (score int);
INSERT INTO ScoreValues (score)
VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
Vzhledem k vaší poznámce, že definujete maximální známky testu v jiné tabulce, můžete se k této tabulce připojit následujícím způsobem, pokud ScoreValues
je jisté, že má hodnoty alespoň tak vysoké nebo vyšší, než jsou maximální známky největšího testu:
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;