在 MySQL 中計算中位數(一組數值資料中的中間值)可能具有挑戰性。雖然使用 AVG(x) 計算平均值很簡單,但尋找中位數則需要更複雜的方法。
為了簡化中位數計算,MariaDB/MySQL 提供了以下查詢:
<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>
此查詢使用了以下技術:
FLOOR((@total_rows 1) / 2)
和 FLOOR((@total_rows 2) / 2)
的值的平均值來計算中位數(對於偶數資料集)。 以上是MySQL中如何有效率地計算中位數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!