MySQL中如何计算调和平均数(Harmonic mean)与平方平均数(Quadratic mean)?
嘿,刚好在MySQL里折腾过这类统计运算,我来给你详细拆解下调和平均数和平方平均数的实现方式,顺便把你提到的几种平均数做个汇总,方便你直接复用:
在MySQL中实现各类平均数计算
1. 算术平均数(你已经熟悉的)
直接用内置的AVG()函数就搞定,这是最省心的:
SELECT AVG(column_name) AS arithmetic_mean FROM data_table;
2. 几何平均数(你提到的两种写法都靠谱)
两种写法都能得到正确结果,不过要注意列值必须是正数,不然LN()函数会抛出错误:
-- 写法1:SUM+COUNT组合 SELECT EXP(SUM(LN(column_name)) / COUNT(*)) AS geometric_mean FROM data_table; -- 写法2:用AVG简化代码 SELECT EXP(AVG(LN(column_name))) AS geometric_mean FROM data_table;
3. 调和平均数
调和平均数的核心公式是 总个数 / 所有数值倒数的和,在MySQL里直接按这个逻辑写就行。不过我之前踩过坑:如果列里有0的话,1/0会触发除以0的错误,所以一定要加条件过滤掉0值;如果有NULL值,用COUNT(column_name)代替COUNT(*)来只统计有效数值:
SELECT COUNT(column_name) / SUM(1/column_name) AS harmonic_mean FROM data_table WHERE column_name > 0; -- 过滤0值,避免报错
4. 平方平均数(均方根)
平方平均数的公式是 √(所有数值平方的平均数),用MySQL的SQRT()开根号,配合AVG()计算平方的平均值就行,两种写法都可以:
-- 写法1:用POW函数计算平方 SELECT SQRT(AVG(POW(column_name, 2))) AS quadratic_mean FROM data_table; -- 写法2:直接用乘法,代码更简洁 SELECT SQRT(AVG(column_name * column_name)) AS quadratic_mean FROM data_table;
小提醒:所有这些计算都要保证数值符合数学逻辑,比如几何平均数和调和平均数都要求数值为正,不然结果要么报错要么没有实际意义。
内容的提问来源于stack exchange,提问作者aid78
相关产品推荐
相关产品推荐

