PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come estrarre il valore mediano?

Penso che il metodo più semplice sia 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;

Ciò presuppone (ragionevolmente) quel score è numerico.

La differenza tra PERCENTILE_CONT() e PERCENTILE_DISC() è ciò che accade quando ci sono un numero pari di valori. Di solito è una considerazione irrilevante, a meno che tu non disponga di una piccola quantità di dati.