Maison >base de données >tutoriel mysql >Comment calculer efficacement la médiane dans MySQL ?

Comment calculer efficacement la médiane dans MySQL ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-20 15:13:09353parcourir

How to Efficiently Calculate the Median in MySQL?

Calculez facilement la médiane MySQL

Dans l'analyse statistique et l'interprétation des données, la détermination de la médiane d'un ensemble de données est cruciale. Bien que MySQL fournisse la fonction pratique AVG() pour calculer la moyenne, trouver la médiane nécessite une approche différente. Cet article fournit une solution simplifiée pour calculer la médiane à l'aide d'une seule requête MySQL.

Calcul médian efficace

MySQL offre un moyen plus efficace que le tri et la sélection de lignes en PHP :

<code class="language-sql">SELECT AVG(dd.val) as median_val
FROM (
  SELECT
    d.val,
    @rownum:=@rownum+1 as `row_number`,
    @total_rows:=@rownum
  FROM
    data d, (SELECT @rownum:=0) r
  WHERE
    d.val is NOT NULL
  -- (在此处添加任何where子句)
  ORDER BY
    d.val
) as dd
WHERE
  dd.row_number IN ( FLOOR((@total_rows+1)/2), FLOOR((@total_rows+2)/2) )</code>

Interprétation du code :

  • La sous-requête calcule le numéro de ligne et le nombre total de lignes pour chaque valeur.
  • La fonction AVG() calcule la moyenne de la médiane.
  • La clause IN filtre les résultats et inclut la ligne du milieu si le nombre de lignes est pair.

Amélioration des performances

Une version optimisée de cette requête utilise des opérations de comptage de lignes pour éviter une seconde passe ou une jointure :

<code class="language-sql">SELECT AVG(dd.val) as median_val
FROM (
  SELECT
    d.val,
    (@rownum:=@rownum+1) as `row_number`  -- 性能优化
  FROM
    data d, (SELECT @rownum:=0) r
  WHERE
    d.val is NOT NULL
  -- (添加where子句)
  ORDER BY
    d.val
) as dd
WHERE
  dd.row_number IN ( FLOOR((@rownum)/2), FLOOR((@rownum)/2)+1 )  -- 或 FLOOR((@rownum)/2), FLOOR((@rownum)/2)+1 )</code>

Amélioration de MariaDB

MariaDB version 10.3.3 inclut la fonction MEDIAN intégrée :

<code class="language-sql">SELECT MEDIAN(val) AS median_val
FROM data</code>

Ensemble, ces méthodes fournissent une solution simple et efficace pour calculer la médiane dans MySQL, permettant aux développeurs d'extraire facilement des informations significatives à partir des données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn