Obtener el promedio de los 10 mejores estudiantes de cada escuela

Tenemos un distrito escolar con 38 escuelas primarias. Los niños tomaron una prueba. Los promedios para las escuelas están ampliamente dispersos, pero quiero comparar los promedios de SOLO LOS 10 mejores estudiantes de cada escuela.

Requisito: use solo tablas temporales.

He hecho esto de una manera muy intensiva en trabajo y propensa a errores de la siguiente manera.
(sch_code = por ejemplo, 9043; - schabbrev = por ejemplo, "Carter"; - totpct_stu = por ejemplo, 61.3)

DROP TEMPORARY TABLE IF EXISTS avg_top10 ;
CREATE TEMPORARY TABLE avg_top10
   ( sch_code   VARCHAR(4),
     schabbrev  VARCHAR(75),
     totpct_stu DECIMAL(5,1)
   );

INSERT 
  INTO avg_top10
SELECT sch_code
     , schabbrev
     , totpct_stu
  FROM test_table
 WHERE sch_code IN ('5489')
 ORDER
    BY totpct_stu DESC
 LIMIT 10;

-- I do that last query for EVERY school, so the total 
-- length of the code is well in excess of 300 lines.  
-- Then, finally...

SELECT schabbrev, ROUND( AVG( totpct_stu ), 1 ) AS top10
  FROM avg_top10
 GROUP
    BY schabbrev
 ORDER
    BY top10 ;

-- OUTPUT:
-----------------------------------
schabbrev   avg_top10
----------  ---------
Goulding         75.4
Garth            77.7
Sperhead         81.4
Oak_P            83.7
Spring           84.9
-- etc...

Pregunta: Entonces esto funciona, pero ¿no hay una mejor manera de hacerlo?

¡Gracias!

PD: Parece tarea, pero esto es, bueno ... real.

Respuestas a la pregunta(1)

Su respuesta a la pregunta