2011-05-29 67 views
0

我可以得到子查询中返回的所有数字的意思吗?例如,我需要从另一个'x'小于当前行'x'的表中附加所有'y'的平均值。子查询上的汇总函数

喜欢的东西 -

select a.x, 
mean(b.y where b.x<a.x from data2 b) as m_y 
from data1 a 

它不工作。获得结果的正确语法(或技巧)是什么?

回答

0

没关系,我知道了。

select a.x, 
select(mean(b.y) where b.x<a.x from data2 b) as m_y 
from data1 a 

我的SQL与非使用生锈。

+0

与JOIN相比,我发现这个语法令人困惑......另外,你的圆括号在错误的地方:整个SELECT应该在里面,不是? – gbn 2011-05-29 08:59:58

1

除非我遗漏了一些东西,否则您将使用标准的AVG聚合。

这可以表示为一个JOIN太

select 
    a.x, 
    AVG (b.y) AS m_z 
from 
    data1 a 
    LEFT JOIN 
    data2 b ON b.x<a.x 
group by 
    a.x 
+0

'LEFT JOIN'?不平等使它成为一个隐含的“CROSS JOIN”?不是那些总是离开,或者他们现在是否允许'RIGHT CROSS'? – 2011-05-29 09:02:56

+0

@Bacon位:这将是一个部分交叉连接或我称之为三角形连接。无论哪种方式,结果都是行b.x gbn 2011-05-29 09:05:05