Есть ли способ избежать повторения выражений столбцов в запросе SELECT? Я хочу разделить сумму и количество столбцов, но хотел бы использовать назначенное имя вместо повторения SUM(value)/COUNT(value)
или с использованием подзапроса. Это возможно? Если это так, ускоряет ли запрос, не повторяя вычисления суммы и подсчета или mysql помнит уже рассчитанные выражения?
SELECT datalist.type, SUM(value) AS type_sum, COUNT(value) AS type_count, type_sum/type_count
FROM (...) AS datalist
GROUP BY datalist.type
throws: # 1054 - Неизвестный столбец 'type_sum' в списке полей
Если вы не поместили его во внешний запрос, это единственный способ.
SELECT datalist.type, SUM(value) AS type_sum, COUNT(value) AS type_count, SUM(value)/COUNT(value)
FROM (...) AS datalist
GROUP BY datalist.type
Одним из способов было бы использовать таблицу псевдонимов с заранее определенными вычислениями, а затем вызвать ее из внешней таблицы, например:
select d.type_sum/d.type_count as dividedValue from (SELECT datalist.type, SUM(value)
AS type_sum, COUNT(value) AS type_count
FROM (...) )AS d
GROUP BY d.type
type_sum
будет распознаваться в других частях запроса, таких какORDER BY
но не среди выбранных полей, где он объявляется. Следующая лучшая вещь здесь - просто использовать короткие имена для псевдонимов таблиц, вы можете просто использовать буквы.