mysql 3 group by 和 sum

标签 mysql sql aggregate-functions

我的表中有这些数据 (tb_cash_transaction)

alt text

我想将 TYPE 列、CURRENCY_ID 列和 AMOUNT 列分组,这样它就会变成如下所示:

**Currency** **Cash IN** **Cash OUT** **Balance**

14             40000        30000        10000        
15             50000        40000        10000 

规则:

1.按货币分组
2.然后求出该货币的现金总和
3.求出该币种的提现总额
4.获取余额(sum cash in - sum cash out)

如何用mysql实现?我尝试使用 group by 但无法获得所需的输出。

提前致谢

最佳答案

SELECT currency_id,
       SUM(CASE
             WHEN TYPE = 'cash_in' THEN amount
           END) AS cash_in,
       SUM(CASE
             WHEN TYPE = 'cash_out' THEN amount
           END) AS cash_out,
       SUM(CASE
             WHEN TYPE = 'cash_in' THEN amount
             ELSE -amount
           END) AS balance
FROM   tb_cash_transaction
WHERE TYPE IN ('cash_in', 'cash_out') /*<--- Where clause probably not needed
                                       but just in case there are other options*/
GROUP  BY currency_id  

关于mysql 3 group by 和 sum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4611472/

相关文章:

mysql - 对相同结果的不同查询?

php - 搜索三个 MySQL 文本字段组合的最快和最具扩展性的方法

MySQL 查询相同兴趣

php - MySQL选择一行中的多行

java - ALTER TABLE CREATE CONSTRAINT IF NOT EXIST 可能吗?

.net - 检查是否安装了 SQL CE 的最佳方法,如果安装了是什么版本?

MySQL:选择前 10 名并聚合其他

mysql - 如何对两个不同表的两个不同列的数据求和?

php - MySQL 连接查询似乎有效,但未按预期执行

mysql - 选择最大日期时间返回错误值