СУММА (ATR * QTDE) / СУММА (QTDE) совпадает с СУММОЙ (ATR)?

#sql

#sql

Вопрос:

Предыстория:

Мой босс просто пришлет мне запрос со следующей колонкой

 ROUND(SUM(ATR * QTDE) / SUM(QTDE), 2) 
 

Но потом я подумал, разве это не то же самое, что

 ROUND(SUM(ATR), 2) 
 

??

Если бы это было просто ATR * QTDE / QTDE , я был бы уверен, что это то же самое, но с SUM «Я не уверен» выглядит так же, но я не могу просто использовать то, что я думаю, что это то же самое, не будучи уверенным в этом. Также я не хочу задавать вопросы своему боссу об этом, так что … вот я!

Вопрос:

SUM(ATR * QTDE) / SUM(QTDE) это то же SUM(ATR) самое, что и ?

Желаемые результаты:

Объяснение и доказательство того, почему это одно и то же или другое.

Комментарии:

1. Не то же самое. Рассмотрим случай с одной строкой, ATR = 1, QTDE = 0.

2. Почему бы просто не попробовать оба? Вы бы очень быстро узнали.

3. @jarlh это будет деление на ноль или 1?

4. @JNevill Я пробовал, выглядит так же с данными, которые у меня есть здесь, но я не могу быть уверен только в некоторых строках, а не во всех случаях

Ответ №1:

Это не то же самое!

Если вы попробуете с образцами данных, вы сможете это увидеть…

 ATR QTDE
5   1
5   2

SUM(ATR) = 5   5 = 10


SUM(ATR * QTDE) / SUM(QTDE) = (5*1   5*2) / (1   2) = 15 / 3 = 5
 

Комментарии:

1. Все заглавные буквы — это эквивалент крика. Пожалуйста, будь милой.

Ответ №2:

Нет, они не совпадают. Один — средневзвешенное значение, а другой — просто сумма. Легко разработать встречные примеры.

 ATR   QTDE
 1    100
 2    200
 

СУММА (ATR) = 3. Соотношение возвращает 500 / 3 <> 3.

Вы, вероятно, думаете, что они эквивалентны:

 ROUND(SUM(ATR * QTDE) / SUM(QTDE), 2) 

ROUND(AVG(ATR), 2) 
 

Это было бы верно только в том случае, если SUM(QTDE) = COUNT(ATR) — что обычно происходит, если ваши данные настроены таким образом или если QTDE = 1 .