Comment calculer la médiane en MySQL

Gustavo du Mortier 11 décembre 2023
  1. La façon la plus précise de calculer la médiane dans MySQL
  2. Utiliser les UDF (User-Defined Functions) pour ajouter des fonctionnalités à MySQL
Comment calculer la médiane en MySQL

Dans ce tutoriel, nous vous montrerons quelques moyens de calculer efficacement la médiane d’une série de nombres dans MySQL.

MySQL n’a pas de fonction intégrée pour calculer la médiane statistique d’une série de nombres. C’est pourquoi, si vous avez besoin de calculer une médiane, vous devez le faire en utilisant le code personnalisé.

La médiane est l’élément central de la série de nombres que vous analysez. La détection de cet élément peut être un processus lent si vous travaillez avec un grand échantillon et que vous ne le faites pas efficacement. Le processus peut également être délicat dans certaines situations. Par exemple, certains algorithmes peuvent fonctionner sur des séries de nombres impairs mais pas sur des séries paires, ou vice versa.

La façon la plus précise de calculer la médiane dans MySQL

Supposons que vous ayez une table dataset avec une colonne MyNumber de type float, et que vous ayez besoin d’obtenir la médiane des séries de données de MyNumber. La façon la plus précise de calculer la médiane avec un algorithme qui fonctionne dans tous les cas serait d’utiliser le script suivant :

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;

Si le tableau comporte un grand nombre de lignes, vous aurez besoin d’un index sur la colonne MyNumber et assurez-vous que cet index est utilisé pour le filtrage et le tri afin que l’instruction fonctionne bien.

Utiliser les UDF (User-Defined Functions) pour ajouter des fonctionnalités à MySQL

Les fonctions mathématiques et statistiques sont très courantes, et vous ne devez pas réinventer la roue si vous devez utiliser une fonction telle que la médiane. Par conséquent, vous pouvez vous procurer une fonction définie par l’utilisateur qui a fait ses preuves et qui fait le travail.

Sur ce site, vous trouverez un ensemble d’UDF que vous pouvez utiliser gratuitement pour ajouter des fonctions statistiques à MySQL. L’un de ces UDF est la fonction median. Elle possède un paramètre d’entrée et un paramètre de sortie, tous deux de type REAL. Le paramètre d’entrée est la colonne qui contient l’ensemble des nombres permettant de calculer la médiane, et le paramètre de sortie est la médiane calculée.

Après avoir téléchargé le code source, vous ajoutez l’UDF en utilisant cette commande :

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

Ensuite, vous pouvez utiliser la fonction dans une instruction SELECT, comme ceci :

SELECT MEDIAN(MyNumber) FROM dataset