Как избежать избыточных выражений в запросе SELECT - PullRequest
0 голосов
/ 12 сентября 2018

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

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

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

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
0 голосов
/ 12 сентября 2018

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

SELECT datalist.type, SUM(value) AS type_sum, COUNT(value) AS type_count, SUM(value)/COUNT(value)
FROM (...) AS datalist
GROUP BY datalist.type
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...