Tôi nghĩ rằng phương pháp đơn giản nhất là PERCENTILE_CONT()
hoặc 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;
Điều này giả định (một cách hợp lý) rằng score
là số.
Sự khác biệt giữa PERCENTILE_CONT()
và PERCENTILE_DISC()
là những gì sẽ xảy ra khi có một số giá trị chẵn. Đó thường là một cân nhắc không quan trọng, trừ khi bạn có một lượng nhỏ dữ liệu.