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

多表字段条件断言:SQL聚合除数为0与公式合并处理咨询

解决方案

完整SQL实现

SELECT
    -- 需求1:合并双音节Formula为单音节,以此作为聚合维度
    CASE 
        WHEN p.Formula = '双音节甲' THEN '单音节甲'
        WHEN p.Formula = '双音节乙' THEN '单音节乙'
        -- 补充其他双音节到单音节的映射规则
        ELSE p.Formula
    END AS Aggregated_Formula,
    p.Molecule,
    SUM(f.sales_amount) AS Total_Sales, -- 替换为实际需要统计的销售指标
    -- 需求2:安全计算Product_units,避免除以0
    CASE 
        WHEN SUM(f.units) <> 0 THEN SUM(f.ext_units) / SUM(f.units)
        ELSE 0
    END AS Product_units
FROM Fact.Sales f
JOIN DM_Product p 
    ON f.product_id = p.product_id -- 替换为实际关联字段
WHERE p.Molecule = '目标分子' -- 替换为你指定的Molecule值
GROUP BY
    CASE 
        WHEN p.Formula = '双音节甲' THEN '单音节甲'
        WHEN p.Formula = '双音节乙' THEN '单音节乙'
        ELSE p.Formula
    END,
    p.Molecule;

关键逻辑说明

  • 双音节Formula聚合:通过CASE WHEN定义双音节到单音节的映射规则,将属于同一单音节的不同双音节Formula归为同一分组。注意GROUP BY子句必须和SELECT中的Formula处理逻辑完全一致,否则会出现分组逻辑不匹配的错误。
  • 除数为0处理:使用CASE分支判断聚合后的SUM(f.units)是否不为0,仅在满足条件时执行除法运算,否则直接返回0。如果你的SQL方言支持NULLIF函数,也可以用COALESCE(SUM(f.ext_units)/NULLIF(SUM(f.units), 0), 0)实现相同效果,两种写法都能安全规避除数为0的异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:45:32