Торстен верен, но стоит немного больше объяснений.
Когда вы запускаете:
SELECT 'TOTAL', AVG(M.LAST_QTY_SHIP_BASE)
. . .;
Вы получаете среднее значение по всем данным,Каждая строка в ваших исходных данных взвешивается ровно один раз.
Когда вы запускаете:
SELECT M.DEMAND_DATE, AVG(M.LAST_QTY_SHIP_BASE), COUNT(*) as cnt
. . .
GROUP BY M.DEMAND_DATE;
Вы объединяете группы записей - в одну дату - и затем обрабатываете их какединственное значение.То есть, вы взвешиваетесь на дней , а не на исходные строк .
Если у вас было 10 записей и 9 были, скажем, 1 января и 1 был2 января первый метод обрабатывает каждую запись одинаково.Вторая обрабатывает запись 2 января как 9-кратное значение первой.Таким образом, если бы значения были 1 на 1 января и 2 на 2 января, эти два средних значения были бы:
- (9 + 2) / 10 = 1,1 - взвешенные по записям
- (1 + 2) / 2 = 1,5 - взвешено по дням
Оба являются подходящими средними значениями.Возможно, другой способ взглянуть на это состоит в том, что около 16% населения мира говорит на мандаринском.Только около 1% стран говорят на мандаринском языке (это официальный язык в Сингапуре и Китае).Эти два числа не совпадают, потому что страны имеют разные размеры.