Creo que el método más simple es PERCENTILE_CONT()
o PERCENTILE_DISC()
:
SELECT MIN(score) as min_score,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY score) as median_score,
MAX(score) max_score
FROM result r JOIN
student s
ON s.id = r.student_id;
Esto supone (razonablemente) que score
es numérico.
La diferencia entre PERCENTILE_CONT()
y PERCENTILE_DISC()
es lo que sucede cuando hay un número par de valores. Esa suele ser una consideración sin importancia, a menos que tenga una pequeña cantidad de datos.