我有一个名为credit_log的表,其中的列是
user_id | amount数量可以是正数,也可以是负数。正数表示购买的积分,负数表示花费的积分。因此,我想要一个查询,它返回
user_id | Bought | Spent 从本质上讲,我希望将购买金额中的正值相加,将支出中的负值相加,并希望按user_id进行分组
目前,我有一个类似这样的查询
select user_id,sum(amount) from credit_log group by user_id;但它总结了积极和消极的价值。我如何编写一个查询来将它们分开?
发布于 2012-03-24 07:44:29
查询中的一些条件语句应该可以很好地工作:
SELECT
user_id,
SUM(IF(amount > 0, amount, 0)) bought,
SUM(IF(amount < 0, amount, 0)) spent
FROM credit_log
GROUP BY user_id;发布于 2012-03-24 07:45:32
select user_id, sum(if(amount>0,amount,0)) bought, sum(if(amount<0,amount,0)) spent
from web_user_credits group by user_id;发布于 2012-03-24 07:42:28
我不是100%在mysql中语法是一样的...但看起来是这样的:
select
user_id
,case when amount > 0 then amount else 0 end as bought
,case when amount < 0 then amount else 0 end as spent
from
credit_log您可以继续简单地将sum()放在case语句(包括end,但不包括as)。
https://stackoverflow.com/questions/9847810
复制相似问题