计算mysql中的数量*单价之和
我想我错过了一个简单的步骤,但我似乎无法理解。我读过其他的文章,他们谈到了分组,但我似乎不能把它们全部放在一起 我有一个保存库存事务的简单表。每一行都有数量和价格。我想得到数量和每个价格的总和,每个数量 这是我的问题。如果删除分组,则得到1个结果,该结果乘以表中的行数。如果我添加分组,我会多次得到正确的结果。我是不是遗漏了什么?我只是觉得在所有结果都包含相同数据的情况下,运行一个查询以获得20k个结果是毫无意义的计算mysql中的数量*单价之和,mysql,Mysql,我想我错过了一个简单的步骤,但我似乎无法理解。我读过其他的文章,他们谈到了分组,但我似乎不能把它们全部放在一起 我有一个保存库存事务的简单表。每一行都有数量和价格。我想得到数量和每个价格的总和,每个数量 这是我的问题。如果删除分组,则得到1个结果,该结果乘以表中的行数。如果我添加分组,我会多次得到正确的结果。我是不是遗漏了什么?我只是觉得在所有结果都包含相同数据的情况下,运行一个查询以获得20k个结果是毫无意义的 SELECT (SUM(i.quantity) - IFNULL(SUM(s.qu
SELECT (SUM(i.quantity) - IFNULL(SUM(s.quantity), 0)) AS quantity,
SUM(i.unitprice * i.quantity) AS totalprice
FROM 02_01_transactions t
LEFT JOIN 02_01_transactions i
ON i.type = 1
AND i.active = 1
LEFT JOIN 02_01_transactions s
ON s.type = 2
AND s.active =1
GROUP BY t.id
不确定是否需要联接(您没有在任何公共值上联接)或type=2行(如果您只是将它们减去)。是否有以下不起作用的原因
-- Total quantity, total price of all type 1, active transactions.
SELECT SUM(quantity) AS quantity,
SUM(unitprice * quantity) AS totalprice
FROM 02_01_transactions
WHERE type = 1
AND active = 1
以下是我对您试图实现的目标的猜测:
select
sum(quantity * case type when 1 then 1 when 2 then -1 end) as quantity,
sum(unitprice * quantity) as totalprice
from 02_01_transactions
where type in (1, 2) and active = 1
你的连接肯定是错的。您是否正在尝试进行某种筛选并对类型2事务应用负号?我猜20k的交易量比你预期的要多得多。你为什么要加入同一个表?难道一个由一组人组成的select不足以给出你的结果吗?根据您发布的查询,我认为没有必要使用这些联接,似乎它们是您多次获得正确结果的原因。+1我怀疑OP可能还想“否定”totalprice计算中type=2行的数量。@spencer7593我对另一个答案做了类似的评论(然后将其删除)我同意,并决定OP可能会这样写,如果这是目的的话。