when语句中的mysql-sql-sum操作

wmomyfyw  于 2021-07-24  发布在  Java
关注(0)|答案(3)|浏览(247)

我需要按天、国家等汇总一些交易日。表中有每个交易日的交易金额(以当地货币表示)和一个包含交易时欧元汇率的字段。这样地:

amount | currency | exchange_rate | date | country

我运行sum(amount/exchange\u rate),但是,对于大约0.5%的行,exchange\u rate的值是0,因此抛出错误“cannot divide by 0”。
我试着用case来运行它,当:

sum(case when exchange_rate = 0 then sum(amount) else sum(amount/exchange_rate) end) as volume

但显然嵌套和是不允许的。有人知道我如何得到上面逻辑上应该产生的结果,但是在case-when语句中没有嵌套和吗?

9wbgstp7

9wbgstp71#

假设 0 表示金额为 EUR 您可以执行以下操作:

sum(amount / case when exchange_rate = 0 then 1 else exchange_rate end)
y3bcpkx1

y3bcpkx12#

我想你想要:

sum(case when exchange_rate = 0 then amount else amount/exchange_rate end) as volume

或者少打字:

sum(amount / coalesce(nullif(exchange_rate, 0), 1)) as volume
vbkedwbf

vbkedwbf3#

基本上你想把汇率看作 1 当它为零时。你可以做:

sum(case when exchange_rate = 0 
         then amount 
         else amount/exchange_rate 
    end
) as volume

相关问题