【问题标题】:min over one dimension followed by max over another dimension一个维度上的最小值,然后是另一个维度上的最大值
【发布时间】:2014-06-25 19:59:52
【问题描述】:

我有一个如下所示的 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

【问题讨论】:

    标签: sql table-statistics


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-08-07
      • 2018-12-27
      • 2021-12-03
      • 2022-01-18
      • 2018-10-26
      • 1970-01-01
      • 2021-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多