泛化涉及三个SQL表的多个实例的查询

泛化涉及三个SQL表的多个实例的查询,sql,join,statistics,Sql,Join,Statistics,我正在做一个公式,以便在SQL中进行一些统计,但我不知道如何改进我正在处理的查询 我犯了一个错误 所以我有3个表,我需要解一个公式,改变索引,I,j i j --- 1 1 1 2 1 3 2 1 2 2 2 3 3 1 3 2 3 3 然后做一些sqrt和pow。我希望结果在一个表中,但我不知道如何将所有这些长查询概括为一个…这似乎只需要几个交叉连接: SELECT ((N.n*M1.m)-(S1.s*S2.s)) / (SQRT((N.n*M2.m)-(p

我正在做一个公式,以便在SQL中进行一些统计,但我不知道如何改进我正在处理的查询

我犯了一个错误

所以我有3个表,我需要解一个公式,改变索引,I,j

i j
---
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3

然后做一些sqrt和pow。我希望结果在一个表中,但我不知道如何将所有这些长查询概括为一个…

这似乎只需要几个
交叉连接:

SELECT  ((N.n*M1.m)-(S1.s*S2.s)) / 
               (SQRT((N.n*M2.m)-(pow(S1.s,2))) * SQRT((N.n*M3.m)-(pow(S2.s,2))))
FROM N
CROSS JOIN sums as S1
CROSS JOIN sums as S2
JOIN mults as M1
     ON M1.i = S1.i
     AND M1.j = S2.i
JOIN mults as M2
     ON M2.i = S1.i
     AND M2.j = S1.i
JOIN mults as M3
     ON M3.i = S2.i
     AND M3.j = S2.i;
(我已经修改了以包含此内容。感谢您提供此内容!)


然而,你的总体设计对我来说有点可疑;您到底想实现什么?

要在一个表中获得预期的结果列,您可以将结果合并到一个表中。但是是否有一种方法可以进行一次查询,而不是每次都在Where子句中给出参数?如果删除Where子句,你怎么知道你的每一行也与什么相关呢。你可以删除where子句,它会给出一个数的banch,但是你需要把where谓词放到select语句中,这样你就知道返回的是什么了。事实上,这些是统计数据,包括方差和平均值,这个公式是用来计算一个表的相关矩阵的。为什么要对SUMMS表使用交叉连接,为什么要在mults表中使用交叉连接?交叉连接做笛卡尔积……是的,因为你要对SUMMS中的每一个值组合进行交叉(至少在你给出的例子中是这样)。换句话说,你自然有一个笛卡尔积开始。。。