Jag tror att den enklaste metoden är PERCENTILE_CONT()
eller 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;
Detta förutsätter (rimligen) att score
är numerisk.
Skillnaden mellan PERCENTILE_CONT()
och PERCENTILE_DISC()
är vad som händer när det finns ett jämnt antal värden. Det är vanligtvis ett oviktigt övervägande, om du inte har en liten mängd data.