MYSQL:具有多个组的 SUM

标签 mysql sql

我有这样的表:

PRODUCTID      REORDER_QTY      TYPE      ADJUST_TYPE  
-------------  ---------------  --------  -----------------
         4343             2.00  Transfer  ADD              
         4730             2.00  Transfer  ADD              
         4730             2.00  Transfer  ADD              
         4730             1.00  Transfer  DEDUCT           
         3643            20.00  Transfer  ADD              
         3643             3.00  Transfer  DEDUCT           

我如何编写一个 sql 来根据 PRODUCTIDADJUST_TYPE 来计算 REORDER_QTY 的总和,然后通过总和得到它的余额ADD 和减去 DEDUCT

的总和

我想要的示例 sql 结果输出:

PRODUCTID        TYPE                   Total_Balance
-------------    ----------             ---------------
4730             Transfer               ((SUM the REORDER_QTY by ADD) - (SUM the REORDER_QTY by DEDUCT))
3643             Transfer               ((SUM the REORDER_QTY by ADD) - (SUM the  REORDER_QTY by DEDUCT))
4343             Transfer               ((SUM the REORDER_QTY by ADD) - (SUM the  REORDER_QTY by DEDUCT))

任何帮助都会很棒,谢谢

最佳答案

您只需要条件聚合:

select productid, type,
       sum(case when adjust_type = 'ADD' then reorder_qty
                when adjust_type = 'DEDUCT' then - reorder_qty
                else 0
           end) as total_balance
from atable
group by productid, type;

关于MYSQL:具有多个组的 SUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25635344/

相关文章:

php - 按事件 PHP 显示画廊

php - MYSQL 和 PHP INSERT NULL 值

mysql - 如何对具有不同条件的两列中的值进行算术运算,然后将答案合并到一个查询中?

java - 从 Oracle SQL 查询中获取结果

sql - 令人困惑的 SQL 服务器行为 - 如果 WHERE 子句中有 1<>2 表达式,则会产生不同的格式

mysql - 从一个表中查询与另一个表中的值匹配的数据

MySQL 查询返回错误值的计数

mysql - CREATE TABLE ... SELECT 是否尊重 AUTO_INCREMENT 列的 ORDER BY?

mysql - 基于group by子句插入多个表

mysql - 带有 count() 和位置的 SQL 请求