#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. Таким образом, порядок операций имеет важное значение.
Филипп
Ответ №1:
Конечно, вы можете сделать это с помощью подзапроса:
SELECT MIN(avg_over_j) FROM (
SELECT i, AVG(x) AS avg_over_j
FROM TheTable
GROUP BY i
)
Но это не APL или язык J; здесь нет «операций по уменьшению размеров».