我想我在这里错过了一个简单的步骤,但我似乎无法弄明白。我已经阅读了其他主题并讨论了分组,但我似乎无法将它们整合在一起。
我有一个包含库存交易的简单表。在每一行中,都有数量和价格。我想得到每个价格*每个数量的数量和总和的总和。
这是我的疑问。如果我删除分组,我会得到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
答案 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