Myślę, że najprostszą metodą jest PERCENTILE_CONT()
lub 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;
Zakłada się (rozsądnie), że score
jest numeryczny.
Różnica między PERCENTILE_CONT()
i PERCENTILE_DISC()
tak się dzieje, gdy istnieje parzysta liczba wartości. Zwykle jest to nieistotna uwaga, chyba że masz niewielką ilość danych.