在 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中文网其他相关文章!