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

时间:2014-02-20 21:25:55

标签: mysql sql database

也许我只是不知道如何正确地搜索它,或者这种技术是否有点名称,但我认为我想要做的事情必须相对简单,我以前从未做过

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

所以,您可以看到我已经有了totalMiles和事件,然后必须将它们相加以计算第3列值。

我是否可以在不必再次sum(miles)sum(events)的情况下获得第3列值? 这样的事情?

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

1 个答案:

答案 0 :(得分:1)

您无法直接在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:http://sqlfiddle.com/#!2/b086d8/2(猜测您的架构)