计算mysql中数量*单位价格的总和

时间:2015-12-11 21:26:12

标签: mysql

我想我在这里错过了一个简单的步骤,但我似乎无法弄明白。我已经阅读了其他主题并讨论了分组,但我似乎无法将它们整合在一起。

我有一个包含库存交易的简单表。在每一行中,都有数量和价格。我想得到每个价格*每个数量的数量和总和的总和。

这是我的疑问。如果我删除分组,我会得到1个结果乘以表中的行数。如果我添加分组,我会多次得到正确的结果。我在这里错过了什么吗?我只是想运行一个查询来获得20k结果,当它们都包含相同的数据时将毫无意义。

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

2 个答案:

答案 0 :(得分:1)

如果您只是将它们减去,则不确定是否需要连接(您没有加入任何常用值)或类型= 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

答案 1 :(得分: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