gpt4 book ai didi

MySQL使用案例获取所有行的总和

转载 作者:行者123 更新时间:2023-11-29 01:38:10 25 4
gpt4 key购买 nike

我有一个 MySQL 表,当用户使用代金券付款时,它会在数据库中记录值。它记录凭证值(value)。我需要得到按凭证金额分割的所有凭证值(value)的总和。我目前的查询如下。但是 butchery_class_voucher_155butchery_class_voucher_135 始终返回 0。

请帮助解决这个问题。

select 
case
when voucher_value = '155.00'
then round(sum(voucher_value/1.2), 2)
else 0.00 end
as butchery_class_voucher_155,
case
when voucher_value = '10.00'
then round(sum(voucher_value/1.2), 2)
else 0.00 end
as shop_voucher,
case when voucher_value = '135.00'
then round(sum(voucher_value/1.2), 2)
else 0.00 end
as butchery_class_voucher_135,
ifnull(round(sum(final_price/1.2), 2),0.00) as paidbycard,
ifnull(round(sum(transfer_fee/1.2), 2),0.00) as transfer_fee
from `bookings`
where `location_id` = 6

最佳答案

问题是您在案例中调用了 sum(),即使案例(或 ifs)应该在 sum() 中。使用您当前的代码,如果第一条记录的 voucher_value 为 10,则只有 shop_voucher 表达式会给您除零之外的任何结果。

select 
round(sum(if(voucher_value=155,voucher_value/1.2,0)), 2) as butchery_class_voucher_155,
...
from `bookings`
where `location_id` = 6

您还需要考虑一件事:舍入函数的确切位置。您可以先对结果求和,然后对其进行舍入(这是我上面的代码中使用的),或者您可以对每个除法应用舍入。

关于MySQL使用案例获取所有行的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33479325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com