也许我只是不知道如何正确地搜索它,或者这种技术是否已经有了某种名称,但我认为我想做的事情一定相对简单,我以前从未做过.
select
sum(miles) as totalMiles
,sum(events) as events
,round(sum(events)/(sum(miles)/1000),1) as events_per1k
from ...
所以,您可以看到我已经有了 totalMiles 和事件,然后必须再次对它们求和以计算第 3 列的值。
有没有一种方法可以获得第 3 列的值,而无需再次 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:http://sqlfiddle.com/#!2/b086d8/2 (猜测你的架构)
关于mysql - 如何将 1 列的结果用作另一列的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21919947/