繁体   English   中英

MySQL Select查询,有条件地将列数据拆分为2个新列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM