Сумма затем разделить на вопрос - PullRequest
0 голосов
/ 24 сентября 2019

В настоящее время я пытаюсь суммировать два столбца, а затем делить на другой, например;

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

Q.Bonus содержит null значений.Если я удаляю ISNULL, он дает мне правильный ответ, но не вычисляет некоторые из-за нулевых значений.Когда я делаю это с ISNULL, это просто дает мне результат суммы.

Ответы [ 4 ]

4 голосов
/ 24 сентября 2019

Из вашего очень короткого вопроса я бы предположил, что у вас есть базовая БОДМАС математическая задача

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

, вероятно, должна быть

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

Обратите внимание на дополнительные скобки!

Без дополнительного контекста и примеров кода действительно трудно понять, что вы действительно спрашиваете.См. на этой странице для получения дополнительной информации о , задающем хороший вопрос .

1 голос
/ 24 сентября 2019

Вам нужны дополнительные скобки.Но я бы рекомендовал использовать NULLIF(), чтобы избежать ошибок деления на ноль:

(SUM(M.Bonus) + COALESCE(SUM(Q.Bonus), 0)) / NULLIF(SUM(Salary.M), 0)
1 голос
/ 24 сентября 2019

Я думаю, вы хотите что-то в этом роде.Вам нужен только один агрегат.Также скобки для обеспечения правильности расчета.

SUM((M.Bonus + ISNULL(Q.Bonus, 0)) / M.Salary) 
1 голос
/ 24 сентября 2019

Вам необходимо исправить ISNULL() синтаксис функции.Вам нужно позаботиться об ошибке devide by zero, как показано ниже.

Этот запрос дает вам ответ.

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

Примечание : я думаю, что вы могли неправильно написать псевдоним зарплаты,Итак, я исправил.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...