获取具有不同类型和名称的特定ID mysql的总和
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取具有不同类型和名称的特定ID mysql的总和相关的知识,希望对你有一定的参考价值。
我正在尝试获得所有支票的总和,但是不同的类型和名称,我很难得到所有这些的总和。我有交易金额和折扣金额。我想获得两笔交易的总和,以便我可以得到我的估计总数。请注意,我有不同类型的交易,也有不同类型的折扣和交易金额(例如20%的折扣,5%的折扣)。
所以,我通过我的查询得到的只是前两个记录,其中Check 201的金额为85.但是,我还想获得另一个具有Check 301的交易。因此,获得估计的总金额225。
谁能帮我这个?
这是我的查询:
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的总和的主要内容,如果未能解决你的问题,请参考以下文章
在 postgres 中,如何从事件日志类型表(具有时间戳)中获取特定时间范围内字段的总和(或汇总)