【问题标题】:Combining "SUMs" with a similar value将具有相似值的“SUM”组合起来
【发布时间】:2015-11-18 17:52:57
【问题描述】:

我有一个提要更新我的数据库,其中包含全天购买/退货的订单。该表具有名称、值和订单类型。下表是当前数据库的视图(订单类型不在此图上,但存储在数据库中,即购买/退货)

我的目标是查询这个数据库并返回以下结果:

purchase 列将汇总该名称的所有购买,return 列将汇总该名称的所有回报,而 net 列将汇总该名称的所有值。

这是我想出的以下查询:

SELECT 
(SELECT NAME, SUM(ORDER)
FROM Orders
WHERE OrderType = "Purchase"
) AS PURCHASE,

(SELECT NAME, SUM(ORDER)
FROM Orders
WHERE OrderType = "Return"
) AS RETURN,

(SELECT NAME, SUM(ORDER)
FROM Orders
) AS NET

结果如下:

计算是正确的,但我不知道如何组合名称并在它们自己的列中显示计算。任何帮助都非常感谢,谢谢!

【问题讨论】:

  • 您没有向我们展示 ordertype 列?!?!
  • 我知道,对不起!在我写下这篇文章并忘记了那一栏之前,我在 lucidchart 中绘制了表格。这是我真正拥有的东西的一个非常愚蠢的版本,我的错!

标签: mysql sql join sum union


【解决方案1】:

你可以使用CASE WHEN:

SELECT NAME,
  SUM(CASE WHEN OrderType = 'Purchase' THEN `ORDER` ELSE 0 END) AS PURCHASE,
  SUM(CASE WHEN OrderType = 'Return' THEN `ORDER` ELSE 0 END) AS `RETURN`,       
  SUM(`Order`) AS Net
FROM Orders
GROUP BY NAME

【讨论】:

  • 太棒了,这正是我正在寻找的解决方案。
猜你喜欢
  • 2021-05-01
  • 2018-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-21
  • 1970-01-01
  • 2016-01-11
  • 2021-07-05
相关资源
最近更新 更多