Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL是否计算相同的总和两次?_Mysql_Sql - Fatal编程技术网

MySQL是否计算相同的总和两次?

MySQL是否计算相同的总和两次?,mysql,sql,Mysql,Sql,假设我有这样一个查询: SELECT Sum(imp) AS totalimp, Sum(money) AS totalmoney, ( Sum(money) / Sum(imp) ) AS result FROM table GROUP BY date MySQL是缓存这两个总和,还是将总和(imp)和总和(money)计算两次 如果没有,有没有办法避免MySQL重新计算两次总和 谢谢

假设我有这样一个查询:

SELECT Sum(imp)                  AS totalimp, 
       Sum(money)                AS totalmoney, 
       ( Sum(money) / Sum(imp) ) AS result 
FROM   table 
GROUP  BY date 
MySQL是缓存这两个总和,还是将总和(imp)和总和(money)计算两次

如果没有,有没有办法避免MySQL重新计算两次总和

谢谢大家!

怎么样

SELECT @totalimp := Sum(imp) AS totalimp, 
       @totalmoney := Sum(money) AS totalmoney, 
       ( @totalmoney / @totalimp ) AS result 
FROM   table 
GROUP  BY date 
SELECT @totalimp := x.totalimp, 
   @totalmoney := x.totalmoney, 
   @result := ( x.totalmoney / x.totalimp )
FROM   (SELECT Sum(imp) AS totalimp, 
           Sum(money) AS totalmoney
         FROM   table 
         GROUP  BY date ) x

每个
日期将计算一次。。。您在
选择
时缺少了它。好吧,如果MySQL不做两次相同的求和,那就太好了!(关于缺少的日期,这实际上是一个虚拟请求,只是为了暴露问题)我已经尝试过这个方法,但是使用这个方法我的结果总是空的。这似乎不是一件好事,分配变量,并使用它在同一时间(从我发现)是的,这将工作!(但是我已经有很多这样的子查询级别了,我想避免再添加一个!)但是由于MySQL没有两次重新计算总和,我可以像我问题中的请求一样保留它:)