Mysql 如何将一列的结果用作另一列的一部分

Mysql 如何将一列的结果用作另一列的一部分,mysql,sql,database,Mysql,Sql,Database,也许我只是不知道如何正确地搜索这个,或者如果这个技术已经有了某种名称,但我想我正在尝试做的一定是相对简单的,我只是从来没有做过 select sum(miles) as totalMiles ,sum(events) as events ,round(sum(events)/(sum(miles)/1000),1) as events_per1k from ... 所以,你可以看到我已经得到了totalMiles和events,然后必须再次求和以计算第三列的值 是否有一种方法可以获得第三列的

也许我只是不知道如何正确地搜索这个,或者如果这个技术已经有了某种名称,但我想我正在尝试做的一定是相对简单的,我只是从来没有做过

select 
sum(miles) as totalMiles
,sum(events) as events
,round(sum(events)/(sum(miles)/1000),1) as events_per1k
from ...
所以,你可以看到我已经得到了totalMiles和events,然后必须再次求和以计算第三列的值

是否有一种方法可以获得第三列的值,而不必再次
sum(miles)
sum(events)
? 像这样的

select 
sum(miles) as totalMiles
,sum(events) as events
,round((val:col2)/((val:col1)/1000),1) as events_per1k
from ...

您不能在SELECT中直接引用它们,但可以将它们包装在子查询中:

SELECT 
   ROUND( i.events / (i.totalMiles / 1000), 1) as events_perlk
FROM (
   SELECT 
      sum(miles)  as totalMiles,
      sum(events) as events
   FROM 
   ...
) i;
可能有一个比这更高性能的解决方案,但这很简单,可以完成这项工作


SQLFiddle:(猜测您的模式)

这是一个非常好的答案,我不认为使用子查询,但这不会影响总体性能,这正是我想要的。此查询中有250万行。如果可以,我会投票的!也许是这样的-它减少了0.2秒的时间(使用SQL\u NO\u缓存来避免缓存弄乱我)