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

使用PARTITION BY时遇除零错误,如何修改SQL返回NULL?

解决SQL除零错误并返回NULL的方案

针对你的除零错误问题,可以通过判断分母是否为0来避免错误,同时在结果无效时返回NULL。以下是两种可行的修改方案:

方案一:使用CASE WHEN显式判断

CASE 
    WHEN SUM(COUNT(a.STC_grade)) OVER(PARTITION BY dbo.S85_STUDENT_ACAD_CRED.stc_subject) = 0 
        THEN NULL 
    ELSE STR((100.0 * COUNT(a.STC_grade)) / SUM(COUNT(a.STC_grade)) OVER(PARTITION BY dbo.S85_STUDENT_ACAD_CRED.stc_subject), 5, 0) + '%' 
END AS [PERCENT]

逻辑说明:

  • 先检查分区内的总计数(即除法的分母)是否为0,若是则直接返回NULL,彻底避免除零运算;
  • 分母不为0时,正常执行百分比计算并拼接百分号,保留原有的格式逻辑。

方案二:使用NULLIF简化判断

STR((100.0 * COUNT(a.STC_grade)) / NULLIF(SUM(COUNT(a.STC_grade)) OVER(PARTITION BY dbo.S85_STUDENT_ACAD_CRED.stc_subject), 0), 5, 0) + '%' AS [PERCENT]

逻辑说明:

  • NULLIF(分母, 0)会在分母等于0时返回NULL,此时整个除法运算结果自动变为NULL;
  • STR()函数处理NULL值时会返回NULL,最终结果即为NULL,同样能规避除零错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 11:12:02