Calcola la mediana in MySQL

Gustavo du Mortier 11 dicembre 2023
  1. Il modo più accurato per calcolare la mediana in MySQL
  2. Usa UDF (funzioni definite dall’utente) per aggiungere funzionalità a MySQL
Calcola la mediana in MySQL

In questo tutorial, mostreremo un paio di modi per calcolare in modo efficiente la mediana di una serie di numeri in MySQL.

MySQL non ha una funzione incorporata per calcolare la mediana statistica di una serie di numeri. Ecco perché, se devi calcolare una mediana, devi farlo utilizzando il codice personalizzato.

La mediana è l’elemento centrale della serie di numeri che stai analizzando. Il rilevamento di questo elemento può essere un processo lento se si lavora con un campione di grandi dimensioni e non lo si fa in modo efficiente. Il processo può anche essere complicato in alcune situazioni. Ad esempio, alcuni algoritmi possono funzionare su insiemi di numeri dispari ma non su insiemi pari o viceversa.

Il modo più accurato per calcolare la mediana in MySQL

Supponiamo di avere una tabella dataset con una colonna MyNumber di tipo float, e di dover ottenere la mediana della serie di dati di MyNumber. Il modo più accurato per calcolare la mediana con un algoritmo che funziona in tutti i casi sarebbe utilizzare il seguente script:

SELECT AVG(mid_vals) AS 'median' FROM (
 SELECT tab1.MyNumber AS 'mid_vals' FROM
  (
   SELECT @row:=@row+1 AS 'row', a.MyNumber
   FROM dataset AS a, (SELECT @row:=0) AS r
   ORDER BY a.MyNumber
  ) AS tab1,
  (
   SELECT COUNT(*) as 'count'
   FROM dataset x
  ) AS tab2
  WHERE tab1.row >= tab2.count/2 and tab1.row <= ((tab2.count/2) +1)) AS tab3;

Se la tabella ha un conteggio di righe elevato, sarà necessario un indice nella colonna MyNumber e assicurarsi che l’indice venga utilizzato per il filtraggio e l’ordinamento affinché l’istruzione funzioni correttamente.

Usa UDF (funzioni definite dall’utente) per aggiungere funzionalità a MySQL

Le funzioni matematiche e statistiche sono molto comuni e non dovresti reinventare la ruota se devi usare una funzione come la mediana. Pertanto, puoi prendere una funzione definita dall’utente ben collaudata che fa il lavoro.

Su questo sito troverai un sacco di UDF che potresti usare gratuitamente per aggiungere funzionalità statistiche a MySQL. Uno di questi UDF è la funzione median. Ha un parametro di input e un parametro di output, entrambi di tipo REAL. Il parametro di input è la colonna che contiene la serie di numeri per calcolare la mediana e il parametro di output è la mediana calcolata.

Dopo aver scaricato il codice sorgente, aggiungi l’UDF utilizzando questo comando:

CREATE AGGREGATE FUNCTION median RETURNS REAL SONAME 'udf_median.so';

Quindi, puoi utilizzare la funzione all’interno di un’istruzione SELECT, in questo modo:

SELECT MEDIAN(MyNumber) FROM dataset