[英]Mysql select query, splitting column data conditionally into 2 new columns
我有一个名为credit_log的表,各列是
user_id | amount
金额可以是正数或负数。 正数表示已购买的信用额度,负数表示已花费的信用额度。 所以,我想有一个查询返回
user_id | Bought | Spent
从本质上讲,我想对Bought中的正值求和,对Spent中负数的求和,我想按user_id分组
目前我有这样的查询
select user_id,sum(amount) from credit_log group by user_id;
但是它总结了正值和负值。 如何编写查询以将它们分开?
查询中的一些条件语句应该很好地工作:
SELECT
user_id,
SUM(IF(amount > 0, amount, 0)) bought,
SUM(IF(amount < 0, amount, 0)) spent
FROM credit_log
GROUP BY user_id;
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;
我不是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
)。
检查一下:
select user_id , sum(if(amount< 0 ,0 ,amount )) as spent,
sum(if(amount> 0 ,0 ,amount )) as bought
from credit_log group by user_id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.