求和然后除以问题



目前我正在尝试对两列求和,然后除以另一列,例如;

'''SUM(M.Bonus) + ISNULL(SUM(Q.Bonus),0) / SUM(Salary.M)'''

Q.Bonus包含null值。如果我删除 ISNULL,它会给我正确的答案,但由于空值而不会计算一些。当我用ISNULL做这件事时,它只是给了我总和的结果。

从你非常简短的问题中,我猜你有一个基本的BODMAS数学问题

SUM(M.Bonus) + ISNULL(SUM(Q.Bonus),0) / SUM(Salary.M)

应该是

(SUM(M.Bonus) + ISNULL(SUM(Q.Bonus),0)) / SUM(Salary.M)

请注意额外的括号!

如果没有进一步的上下文和示例代码,就很难看到您真正在问什么。 有关提出好问题的更多信息,请参阅此页面。

您需要更正ISNULL()函数语法。
您需要注意devide by zero错误,如下所示。

此查询为您提供答案。

SUM(ISNULL(M.Bonus,0)) + SUM(ISNULL(Q.Bonus,0)) / ISNULL(SUM(ISNULL(M.Salary,0)),1)

注意:我认为您可能写错了工资别名。所以,我已经纠正了。

我认为你想要一些类似的东西。您只需要一个聚合。还要加上括号以确保正确执行计算。

SUM((M.Bonus + ISNULL(Q.Bonus, 0)) / M.Salary) 

您需要额外的括号。 但我建议使用NULLIF()来避免被零除错误:

(SUM(M.Bonus) + COALESCE(SUM(Q.Bonus), 0)) / NULLIF(SUM(Salary.M), 0)

相关内容

  • 没有找到相关文章

最新更新