2015-11-04 70 views
1

我需要根据其他操作结果进行操作。例如:基于其他操作结果的MySQL查询操作

SELECT 
    SUM(first_column) as res1, 
    SUM(second_column) as res2, 
    res1/res2 as res3 
FROM my_table 

但是,它似乎只能对现有列进行操作。这个用例的解决方法是什么?

+0

那么你可以说结果集..和整个查询 –

回答

2

您可以使用子查询来实现这一目标。 事情是这样的:

SELECT res1, res2, res1/res2 as res3 
(SELECT SUM(xxx) as res1, SUM(xxx) as res2 
FROM yyy) as subquery 
+0

谢谢,这正是我在寻找! – jeanmonod

1

尝试类似:

SELECT res1/res2 as res3 
FROM (SELECT SUM(xxx) as res1, SUM(xxx) as res2 
     FROM yyy)) 
1
SELECT res1/res2 as res3 
FROM (SELECT SUM(xxx) as res1, SUM(xxx) as res2 
FROM yyy)) 

这应该工作

1

您可以使用您的问题这段代码块:

select t.res1 
    ,t.res2 
    ,t.res1/t.res2 as res3 
from (select sum(xxx) as res1 
      ,sum(xxx) as res2 
     from yyy) t 

OR

不推荐,但作品。

select sum(xxx1) as res1 
    ,sum(xxx2) as res2 
    ,sum(xxx1)/sum(xxx2) as res3 
    from yyy 
0

如果您不需要的中间结果,你可以跳过子查询获得更好的性能:

SELECT SUM(c1)/SUM(c2) AS res FROM t 
+0

是的,但我需要三个结果... – jeanmonod