获取具有不同类型和名称的特定ID mysql的总和

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取具有不同类型和名称的特定ID mysql的总和相关的知识,希望对你有一定的参考价值。

我正在尝试获得所有支票的总和,但是不同的类型和名称,我很难得到所有这些的总和。我有交易金额和折扣金额。我想获得两笔交易的总和,以便我可以得到我的估计总数。请注意,我有不同类型的交易,也有不同类型的折扣和交易金额(例如20%的折扣,5%的折扣)。

所以,我通过我的查询得到的只是前两个记录,其中Check 201的金额为85.但是,我还想获得另一个具有Check 301的交易。因此,获得估计的总金额225。

谁能帮我这个?

这是我的样本数据。 enter image description here

这是我的查询:

select a.DATE, a.ID, SUM(a.amount) as TRANSACTION, 
(select sum(cashier.amount) from cashier where `cashier `.`check` = 
a.`check` and cashier.date = a.date  and  cashier.ID= a.ID GROUP BY 
`cashier.check) as `ESTIMATED VALUE`  FROM cashier a where a.date = 
'8/1/2017' and a.name = 'Price discounted 10%' GROUP BY a.DATE, a.ID ORDER BY a.date
答案

使用case expression将金额视为正数或负数(对于折扣),然后将其加总。

SELECT
      a.`date`
    , a.ID
    , SUM(a.amount) AS `transaction`
    , SUM(case when type <> 1 then a.amount*-1.0 else a.amount end) AS `estmated_value`
FROM cashier a
WHERE a.date = '2017-01-08'
AND a.name = 'Price discounted 10%'
GROUP BY
      a.`date`
    , a.ID
ORDER BY
      a.`date`

以上是关于获取具有不同类型和名称的特定ID mysql的总和的主要内容,如果未能解决你的问题,请参考以下文章

mySQL 按表中值的总和排序,在另一个表中具有它的名称

在 postgres 中,如何从事件日志类型表(具有时间戳)中获取特定时间范围内字段的总和(或汇总)

如何使用mysql从图像表中获取总数?

如何使用 Node.js 查询 mysql 数据库以通过 url 中的名称获取特定用户(字段),而不仅仅是通过 ID

如何获取具有特定名称/值的所有变体ID

获取每个名称的总成本总和