Mysql 和的和

Mysql 和的和,mysql,Mysql,是否可以在一个select查询中求和 大概是这样的: SELECT id, SUM(current_price - bought_price)*amount AS profit FROM purchase WHERE purchase_id = 1 GROUP BY id 我想要返回的所有利润的总和,这是您的查询: SELECT id, SUM(current_price - bought_price)*amount AS profit FROM purchase WHERE purchas

是否可以在一个select查询中求和

大概是这样的:

SELECT id, SUM(current_price - bought_price)*amount AS profit FROM purchase WHERE purchase_id = 1 GROUP BY id 
我想要返回的所有利润的总和,这是您的查询:

SELECT id, SUM(current_price - bought_price)*amount AS profit
FROM purchase
WHERE purchase_id = 1
GROUP BY id ;
如果您想要总利润,只需删除
分组by
,并重新表述
sum()

编辑:

您也可以这样写:

SELECT SUM((current_price - bought_price)*amount) AS profit
FROM purchase
WHERE purchase_id = 1;
顺便说一下,原来的公式不正确。您希望将同一表单用于
分组依据

SELECT id, SUM((current_price - bought_price)*amount) AS profit
FROM purchase
WHERE purchase_id = 1
GROUP BY id;

您的版本存在的问题是,对于每个
id
,从任意行中获取
金额。如果每个
id
purchase
中只有一行,则没有问题。但是如果一个
id
有多行,那么问题中的查询将产生不确定的结果。(您使用的是一个MySQL扩展名,用于
分组方式(见文档)。

这就是您要问的问题:

SELECT tmp.id, SUM(tmp.profit)
FROM (
  SELECT id, SUM(current_price - bought_price)*amount AS profit 
  FROM purchase 
  WHERE purchase_id = 1
  GROUP BY id 
) AS tmp
但结果与

SELECT SUM(current_price - bought_price)*amount AS profit 
FROM purchase 
WHERE purchase_id = 1

您可以对GROUP BY()使用WITH ROLLUP修饰符。因此,您将获得所有产品组的所有汇总和总计。

提供您的表结构和数据示例。只需从选择中删除
按Id分组的
,以及
Id
列考虑使用
总和(金额*(当前购买价格))
SELECT SUM(current_price - bought_price)*amount AS profit 
FROM purchase 
WHERE purchase_id = 1
SELECT id, SUM(current_price - bought_price)*amount 
AS profit FROM purchase WHERE purchase_id = 1 GROUP BY id WITH ROLLUP;