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.
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 :
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>
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!