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缓存来避免缓存弄乱我)