gpt4 book ai didi

mysql - mysql中每一行的协方差

转载 作者:行者123 更新时间:2023-11-30 22:20:48 25 4
gpt4 key购买 nike

我想在mysql中做关联。

我对如何从每一列 (1-24) 中减去该列的平均值感到困惑?

表格:

sampletable

首先,我尝试用 LOOP 选择每一列,然后如果成功我将开始减去它们,但我没有选择每一列。

代码:

BEGIN

DECLARE i INT;
SET i:=1;
myloop: LOOP
SELECT 'i' FROM test_correl2 AS DEM;
SET i=i+1;
IF i=25 then
LEAVE myloop;
END IF;
END LOOP myloop;
SELECT @i;

END

最佳答案

您可以创建 2 个存储过程,如下所示。第一个是获取列的平均值并将该值存储在@average 中。第二个是更新列以从每一列中减去这个@average。

create procedure get_test_average()
begin
set @i = 1;
set @columns = '(';
while @i < 3 do
set @columns = CONCAT(@columns,'`',@i,'`+');
set @i=@i+1;
end while;
set @columns = CONCAT(@columns,'`',@i,'`');
set @columns = CONCAT(@columns,')');
set @sql = CONCAT('SELECT ',@columns,'/',@i,' INTO @average FROM test_correl2 WHERE Nopel = 1151110;');
prepare statement1 from @sql;
execute statement1;
end/

create procedure subtract_average()
begin
set @i = 1;
set @columns = '';
while @i < 3 do
set @columns = CONCAT(@columns,'`',@i,'` = ','`',@i,'`-@average,');
set @i=@i+1;
end while;
set @columns = CONCAT(@columns,'`',@i,'` = ','`',@i,'`-@average');
set @sql = CONCAT('UPDATE test_correl2 SET ',@columns,' WHERE Nopel = 1151110;');
prepare statement1 from @sql;
execute statement1;
end/

然后调用每个存储过程一次。

call get_test_average();
call subtract_average();

sqlfiddle of these stored procs and how they're called

在示例 sqlfiddle 中,我只做了 3 列,您可以将 3 的出现次数更改为 24 以满足您的需要(出现 3 在上面的每个存储过程中)。

关于mysql - mysql中每一行的协方差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36684065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com