你好,我是mysql的新手,正在尝试创建一个简单的函数来计算给定列的标准差,作为这个函数的参数。我在创建for循环和增加var变量时遇到问题。任何帮助都将不胜感激。
CREATE FUNCTION `Stdev` (col varchar(10))
RETURNS decimal(8,5)
BEGIN
SELECT @col :=
SELECT @mean := AVG(col) FROM mytable ;
simple_loop: loop
BEGIN
SELECT @var := POWER(@mean - (SELECT col FROM mytable),2);
SELECT @stdev := POWER(@var,0.5)
RETURN @stdev;
END
1条答案
按热度按时间k4ymrczo1#
sql已经有了标准差函数,
stddev_pop
.但是如果你真的想自己写的话。。。
虽然您可以用sql编写循环,但这通常意味着您的工作效率低下。sql是一个非常有效地迭代大型数据集的引擎。如果你自己做循环,你就没有利用sql。
按照标准差算法,我们可以将这个查询建立为一系列子选择。
以平均值为准。
计算平均值和平方的差。
求出差值的平均值并取平方根。