Это должно работать:
SELECT *
FROM
(
SELECT (SELECT max(level) FROM students "inner" WHERE "inner".level < "outer".level) as Level
, sum(Case When grade = 'Pass' Then 1.0 Else 0.0 End) / count(*) as Percentage
FROM students "outer"
GROUP BY level
union all
SELECT max(level) as Level
, null as Percentage
FROM students
) mylevels
WHERE level is not null
Но это не симпатичный код.
Я рекомендую вам создать уровень таблицы (level int, next_level int), код будет намногоболее просто.