Comment calculer la médiane en MySQL
- La façon la plus précise de calculer la médiane dans MySQL
- Utiliser les UDF (User-Defined Functions) pour ajouter des fonctionnalités à 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