Как избежать избыточных выражений в запросе SELECT

0

Есть ли способ избежать повторения выражений столбцов в запросе 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' в списке полей

  • 1
    Насколько я знаю, это невозможно, псевдоним type_sum будет распознаваться в других частях запроса, таких как ORDER BY но не среди выбранных полей, где он объявляется. Следующая лучшая вещь здесь - просто использовать короткие имена для псевдонимов таблиц, вы можете просто использовать буквы.
Теги:
database

2 ответа

1
Лучший ответ

Если вы не поместили его во внешний запрос, это единственный способ.

SELECT datalist.type, SUM(value) AS type_sum, COUNT(value) AS type_count, SUM(value)/COUNT(value)
FROM (...) AS datalist
GROUP BY datalist.type
1

Одним из способов было бы использовать таблицу псевдонимов с заранее определенными вычислениями, а затем вызвать ее из внешней таблицы, например:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню