php mysql总和减去条件

时间:2017-02-23 19:37:44

标签: php mysql sum

我想要和值,这个值比category

  

表:

id | value | category

1  | 1000  | income

2  | 500   | income

3  | 600   | expense

收入为正,收入为负

对于此表,我想获得SUM并返回900 //1000+500-600

2 个答案:

答案 0 :(得分:2)

您的查询应如下所示

select sum( if(category='income', value, -1 * value) )
from table

来自MYSQL documentation

  

如果expr1为TRUE(expr1<> 0且expr1<> NULL),则IF()返回   表达式2;否则返回expr3。 IF()返回一个数字或字符串   值,取决于使用它的上下文。

答案 1 :(得分:0)

创建表/插入数据

CREATE TABLE t
    (`id` INT, `value` INT, `category` VARCHAR(7))
;

INSERT INTO t
    (`id`, `value`, `category`)
VALUES
    (1, 1000, 'income'),
    (2, 500, 'income'),
    (3, 600, 'expense')
;

<强>查询

SELECT (
   SUM(CASE WHEN t.category = 'income' THEN t.value END) -- only sum category = 'income'
    - 
   SUM(CASE WHEN t.category = 'expense' THEN t.value END) -- only sum category = 'expense'
 ) 
  AS total
FROM 
 t

<强>结果

total   
--------
900