0

我有一个如下所示的 SQL 表:

i       j       x
0       0       0.5
0       1       1.0
0       2       1.5
1       0       1.4
1       1       1.3
1       2       1.2

等等。我想取维度上的平均值,j然后取维度上的最小值i。在这种情况下,对维度取平均值j会产生以下结果:

i       x
0       1.0
1       1.3

然后在维度上取最小值i产生值 1.0,这是最终结果。是否有一种有效的方法来执行本示例中的查询,即按指定顺序执行一系列降维操作的查询?

注意,如果我们颠倒操作顺序,中间结果是

j       x
0       0.5
1       1.0
2       1.2

对维度取平均值j会产生 0.9 的最终结果。因此,操作的顺序很重要。

菲利普

http://phillipmfeldman.org

4

1 回答 1

0

当然,您可以使用子查询来做到这一点:

SELECT MIN(avg_over_j) FROM (
   SELECT i, AVG(x) AS avg_over_j
   FROM TheTable 
   GROUP BY i
)

但这不是 APL 或 J 语言。没有“降维操作”。

于 2014-06-25T20:04:33.000 回答