我有不同的人的重量。
平均值是:
select avg(weight) as avg_weight
from table;
但stddev()
和std()
之间有什么区别?是否可以从avg_weight获得标准偏差?
这是正确的方法:
select stddev(weight)
from table; /* -> is here where the function avg(weight) included? */
或者我需要这样的东西:
select stddev(avg(weight))
from table; /* (but this does not work) */
感谢。
答案 0 :(得分:4)
在MySQL中,它们提供了与标准偏差相关的四种不同功能。他们只能提供两个STDDEV_POP
和STDDEV_SAMP
(人口与样本S.D.)。它们提供了另外两个与标准SQL(STD
)和Oracle(STDDEV
)的兼容性。
以下是MySQL manual的说明:
<强> STD(表达式)强>
返回expr的总体标准差。这是标准SQL的扩展。可以使用标准的SQL函数STDDEV_POP()。
如果没有匹配的行,STD()将返回NULL。
<强> STDDEV(表达式)强>
返回expr的总体标准差。提供此功能是为了与Oracle兼容。可以使用标准的SQL函数STDDEV_POP()。
如果没有匹配的行,STDDEV()将返回NULL。
<强> STDDEV_POP(表达式)强>
返回expr的总体标准差(VAR_POP()的平方根)。您也可以使用STD()或STDDEV(),它们是等效的但不是标准的SQL。
如果没有匹配的行,则STDDEV_POP()返回NULL。
<强> STDDEV_SAMP(表达式)强>
返回expr的样本标准差(VAR_SAMP()的平方根。
如果没有匹配的行,STDDEV_SAMP()将返回NULL。
答案 1 :(得分:0)
您不能在STD或任何其他聚合函数中使用AVG。列中的每一个。
SELECT
AVG(table.column) AS average_,
STD(table.column) AS std_,
etc....
FROM
table;