好吧,我有一个data
数百万行的表。我想对每一行(从第 1 行到当前行减 1)进行相关性研究。例如,第一行被省略。第 2 行的result
列将使用第 1 行提供相关性。第 3 行的result
列将使用第 1 行和第 2 行提供相关性。等等。
可以使用以下公式计算整个表的相关性:
SELECT (Count(*)*Sum(x*y)-Sum(x)*Sum(y))/
(sqrt(Count(*)*Sum(x*x)-Sum(x)*Sum(x))*
sqrt(Count(*)*Sum(y*y)-Sum(y)*Sum(y))) AS TotalCorelation FROM Data;
我想尽可能避免使用 Joins,因为它需要很多时间,有时甚至超时错误,超过 300 秒)。另一种选择是什么?
示例表数据结构:
id, x, y, result
1 , 4, 2, null
2 , 6, 3, -0.2312
3 , 5, 5, 0.42312
4 , 6, 2, -0.5231
5 , 5, 5, 0.22312
6 , 3, 7, -0.2312
7 , 2, 9, 0.42231
8 , 7, 2, 0.32253
9 , 9, 5, 0.32431
id : primary key
x and y : The data
result: correlation