2013-09-21 31 views
1
user1 90 add 
user2 60 remove 
user3 70 remove 
user2 80 remove 
user2 80 remove 
user1 70 remove 
user3 20 add 
user4 10 add 

我需要sql查询来获取每个用户的总数。在这种情况下user1 i should get 20每个不同名称的总数量

user4 --> 10 
user3 --> -50 

我曾尝试:

SELECT description, SUM(money) FROM jabeda GROUP BY description 

如何做到这一点?

+1

SELECT description,SUM(money) FROM'jabeda' GROUP BY description – LynAs

+0

该代码取自实际表 – LynAs

+0

'user3'应该是'90'。对? –

回答

5
SELECT col1, 
     SUM(CASE WHEN col3 = 'add' THEN col2 ELSE col2 * -1 END) TOtals 
FROM tableName 
GROUP BY col1 

我不知道你的列名,但肯定的查询会帮助你。 Col1这是user的名称。 Col2是金额,而Col3是一些什么样的动作类型。

查询所做的是检查类型是否为addremove。当碰巧是remove时,该值乘以-1以取消该值。

+0

稍微更紧凑的版本:'SELECT col1,SUM(col2 * IF(col3 ='add',1,-1))AS总计FROM tableName GROUP BY col1' – neubert

+0

@neubert yep紧凑版本,但它是供应商特定的。 CASE将主要用于任何其他RDBMS。 –

+0

即使有'case'我会写'col2 * case col3'时'add'然后1'当'删除'然后-1结束'时写这个 - 所以我不会重复col2 –