Multiple vs Single COUNT on same col + Multiple vs Single col index
This is straightforward enough and more efficient:

SELECT  school, 
        CASE
           WHEN students &gt; 1000 THEN 'SMALL'
           WHEN students &gt; 10000 THEN 'MEDIUM'
           WHEN students &gt; 100000 THEN 'LARGE'
        END as size 
    FROM ( SELECT school,
                  COUNT(*) as students
              FROM tbl_students
              GROUP BY school
         ) AS cts


It would need INDEX(school) or any index starting with school.