避免在 SELECT 查询中使用冗余表达式



有什么方法可以避免在 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">

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

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

最新更新