Mysql
 sql >> Database >  >> RDS >> Mysql

Calcolo della mediana con MySQL

Propongo un modo più veloce.

Ottieni il conteggio delle righe:

SELECT CEIL(COUNT(*)/2) FROM data;

Quindi prendi il valore medio in una sottoquery ordinata:

SELECT max(val) FROM (SELECT val FROM data ORDER BY val limit @middlevalue) x;

L'ho testato con un set di dati 5x10e6 di numeri casuali e troverà la mediana in meno di 10 secondi.

Questo troverà un percentile arbitrario sostituendo COUNT(*)/2 con COUNT(*)*n dove n è il percentile (.5 per la mediana, .75 per il 75° percentile, ecc.).