[英]Divide by zero error encountered when using window function sum
在 SQL 服务器中运行以下查询时,出现错误:
遇到除以零错误。
select ID, CID, PTYPE, GW,PPE
, payPercentage = SUM(GW) * 100.0 / SUM(SUM(GW)) OVER (partition by ID, PPE)
from pw_part
where ID ='001014055'
group by ID,CID,PPE,PTYPE,GW
payPercentage=SUM(GW) * 100.0 / SUM(SUM(GW)) OVER (partition by ID, PPE)
导致错误
如果我将 SUM 更改为
ISNULL (SUM(gross_wages) * 100.0 / NULLIF(SUM(SUM(gross_wages)),0),0) OVER (partition by ssn, pay_period_ending)) as pctg
我面临以下错误
function 'ISNULL' 不是有效的窗口 function,不能与 OVER 子句一起使用。
提前致谢
您只需要nullif()
在分母中:
SUM(GW) * 100.0 / NULLIF(SUM(SUM(GW)) OVER (partition by ID, PPE), 0) as percentage
实际上,您不希望分子中有NULLIF()
,因为这可能会返回NULL
值,该值实际上应该是0
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.