如何对行进行求和然后减去它们?

时间:2015-12-20 12:35:07

标签: php mysql sql

CREATE TABLE test
    (`id` int, `type` int, `summ` int)
;

INSERT INTO test
    (`id`, `type`, `summ`)
VALUES
    (1, 1, 100),
    (2, 1, 200),
    (3, 2, 250),
    (4, 2, 20),
    (5, 3, 10)
;

SQL:

SELECT
  type, SUM(summ) as total
FROM
  test
GROUP BY
  type

结果是3行按type分组,总和值为total:1 - 300,2 - 270,3 - 10。

问:如何将total类型的最终1结果从所有其他结果(23中减去?结果将是:300 - 270 - 10 = 20。 所以,我需要得到20

http://sqlfiddle.com/#!9/c4df28/1

1 个答案:

答案 0 :(得分:1)

您可以使用SUMCASE

SELECT SUM(CASE WHEN type = 1 THEN summ ELSE -summ END) as total
FROM test

SqlFiddleDemo

type = 1的记录将保持不变,休息将被取消。