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

标签 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 列的值。

有没有一种方法可以获得第 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/

相关文章:

php - ajax php总是返回null

sql - 如何从一个表的行获取值到另一个表的列

sql - 房间搜索sql查询

database - 主键的 INT 与 VARCHAR 数据类型

c# - 无法从 Entity Framework 中的模型代码生成数据库

mysql - 在 MySQL 中缓存行排名?

php - 代码仅更新数据库中的 false 值,但不更新 true 值

java - MySQL PHP JSON 空文本

mysql - 汇总一个表,其中某些字段为空值

mysql - 匹配mysql数据库中的关键词