You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL中处理费率卡(Ratecard)异常值的实现方案

解决方案

直接在关联Rates表的条件中,通过CASE WHEN对m.height做预处理,覆盖null和超界的场景:

SELECT m.*, NVL(r.cost, 0) 
FROM m
LEFT JOIN e ON e.key = m.key
LEFT JOIN rates r ON 
    CASE 
        WHEN m.height IS NULL THEN 0
        WHEN m.height > 7 THEN 7
        ELSE m.height 
    END BETWEEN r.height_min AND r.height_max
    AND e.power BETWEEN r.power_start AND r.power_end
    AND m.power BETWEEN r.power_start AND r.power_end
    AND r.product_type = m.product_type

关键逻辑说明

  • 处理null值:将null的height替换为0,刚好匹配费率卡中height_min=0、height_max=1的最低档位
  • 处理超界值:将大于7的height替换为7,匹配费率卡中height_min=6、height_max=7的最高档位
  • 原有逻辑保留:功率匹配、产品类型匹配的条件保持不变,确保基础费率规则正常生效
  • 兜底处理:依然用NVL(r.cost, 0)应对极端情况(比如功率不在任何费率区间时),返回默认成本0

内容的提问来源于stack exchange,提问作者Aparna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 13:09:59