Mysql 和的和
是否可以在一个select查询中求和 大概是这样的: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 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;