минимум по одному измерению, за которым следует максимум по другому измерению

#sql #table-statistics

#sql #таблица-статистика

Вопрос:

У меня есть таблица 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

Ответ №1:

Конечно, вы можете сделать это с помощью подзапроса:

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

Но это не APL или язык J; здесь нет «операций по уменьшению размеров».