#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
.