【问题标题】:SQL queries for calculating shipping charges based on subtotal amount [closed]用于根据小计金额计算运费的 SQL 查询 [关闭]
【发布时间】:2021-08-23 17:57:48
【问题描述】:
ID Name min_amount charge
1 Standard 50.00 3.00
2 Express 50.00 5.00
3 Standard 100.00 2.00
4 Express 100.00 0.00

所以我在 SQL 中有这个表,我的要求是根据 min_amount(小计)计算运费。例如:如果小计为 45.00,我想获取 ID 为 1,2 的行(因为 45.00

SELECT id,min_amount, MAX(charge) as shipping FROM `shippings` WHERE min_amount > 45.00 GROUP BY name

这是有效的。但是当值更改为 101.00 时,这不会返回任何内容我希望它返回最大 min_amount 行,即 3,4

我应该改变什么?以及对此有什么雄辩的查询,因为我正在使用 laravel 但没有它也可以完成。

【问题讨论】:

  • 架构或查询中没有提到列小计,这有什么关系?
  • 抱歉这个错误,我编辑了问题

标签: mysql sql laravel


【解决方案1】:

您需要首先获得最高的最小值,并使用它在WHERE 子句中使用IF 条件来决定上限值,

SELECT id, name, min_amount, MAX(charge) as shipping
FROM shippings,
     (SELECT MAX(min_amount) as min_amount_limit FROM shippings) z
WHERE min_amount >= IF(z.min_amount_limit < 101.00, z.min_amount_limit, 101.00)
GROUP BY name;

Working Fiddle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多