我正在尝试编写执行以下操作的MySQL查询:
我有一张看起来像这样的表
Id t
-----------
1 1
2 4
1 6
2 9
1 12
2 14
我需要找到每个 Id 为2的 t 列的总和,并从中减去 t 列的总和每个 Id 为1。
因此,对于此示例, Id 1的总和为19, Id 2的总和为27。
我希望输出为8。
我想这句话看起来类似于:
SELECT sum(t) WHERE Id = 2 - sum(t) WHERE Id = 1;
但这显然不是正确的语法。
我为糟糕绘制的表道歉,我仍然是stackoverflow的新手。
答案 0 :(得分:1)
您可以使用CASE声明:
SELECT
SUM(CASE
WHEN Id = 2 THEN t
WHEN Id = 1 THEN 0 - t
ELSE 0
END) AS mySum
FROM myTable
希望它按原样工作......我只有SQL Server可以测试,但MySQL的语法应该是相同的。
答案 1 :(得分:1)
SELECT SUM(IF(`id` = 2, t, 0)) - SUM(IF(`id` = 1, t, 0)) as `result` FROM `table`
答案 2 :(得分:0)
取决于你的餐桌有多大。如果它很小或没有索引,你可以这样做:
select sum(if( Id=2,t,if(Id=1,-t,0)))
from data;
如果您有足够的行并且在列Id中有索引:
select sum(id2)-sum(id1)
from (
select 0 as 'id1', sum(t) as 'id2'
from data
where id=2
union
select sum(t) as 'id1', 0 as 'id2'
from data
where id=1
) as d;