避免select查询中的冗余表达式

ndasle7k  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(295)

有没有办法避免在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

抛出:#1054-字段列表中的未知列“type_sum”

h7wcgrx3

h7wcgrx31#

一种解决方法是使用带有预定义计算的别名表,然后从外部表调用它,例如:

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
4dc9hkyq

4dc9hkyq2#

除非你把它放在外部查询中,否则这是唯一的方法。

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

相关问题