2009-10-15 4 views
5

Почему не среднее значение показателя сотрудника каждого месяца, когда оно суммируется, равно среднему показателю сотрудников (когда-либо)?Точность округления MS Access с группой

Средняя

SELECT Avg(r.score) AS rawScore 
FROM (ET INNER JOIN Employee AS e ON ET.employeeId = e.id) INNER JOIN (Employee AS a INNER JOIN Review AS r ON a.id = r.employeeId) ON ET.id = r.ETId 
WHERE (((e.id)[email protected])) 

Возвращает 80,737


Средняя по месяцам

SELECT Avg(r.score) AS rawScore, Format(submitDate, 'mmm yy') AS MonthText, month(r.submitDate) as mm, year(submitDate) as yy 
FROM (ET INNER JOIN Employee AS e ON ET.employeeId = e.id) INNER JOIN (Employee AS a INNER JOIN Review AS r ON a.id = r.employeeId) ON ET.id = r.ETId 
WHERE (((e.id)[email protected])) 
GROUP BY month(r.submitDate), year(submitDate), Format(submitDate, 'mmm yy') 
ORDER BY year(submitDate) DESC, month(r.submitDate) DESC 

Возвращает

Average Score : Month 
81.000 : Oct 09 
80.375 : Sep 09 
82.700 : Aug 09 
83.100 : Jul 09 
75.625 : Jun 09 

Я знаю 80,737 правильно, потому что я подсчитаны до записи вручную и сделать среднее. Но среднее значение этой таблицы (в трех десятичных разрядах) составляет 80,56, что слишком далеко. Делает ли группа беспорядок с округлением на каждом шагу?

+0

Какой запрос возвращает 80,56? –

+0

Пять ежемесячных запросов, усредненных вместе = 80,56 –

+0

Какой тип данных? Какой алгоритм округления? – onedaywhen

ответ

7

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

Если в течение каждого месяца количество сотрудников, работающих с сырьем, различно, это будет искажать результаты.

Рассмотрим этот пример: если мы вычисляем среднее число от 1 до 10, среднее значение равно 5,5.

При вычислении среднего числа от 1 до 5 среднее значение равно 3 и от 6 до 10 равно 8. Обе группы имеют 5 элементов, поэтому среднее значение 3 и 8 = 5,5.

Однако, если вы берете первое среднее значение 1 и 2 = 1,5, а второе среднее значение от 3 до 10 = 6,5, то среднее значение 1,5 и 6,5 дает 4. Это искажено, потому что первая группа имеет 2 элемента и второй - 8.

В дополнение к этому будут кумулятивные эффекты округления, которые заметил Роберт Харви.

+0

. Ах, спасибо, после того, как вы сбросили необработанные записи на Excel и усреднение месяцы в отдельности имеют смысл. – CRice

+0

Нет проблем, это одна из тех вещей, которая просто не интуитивно понятна –

1

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

Сказали, что я также проверил количество записей и посмотрю, стреляют ли они. Это возможно, учитывая форматирование на дату и т. Д., Что одна или две записи проскальзывают через трещины в ежемесячных запросах.

+0

Да, это зависит от того, что база данных делает за кулисами, и если она округляется до определенной точности по каждой группе, ... проверит, что записи не проскальзывают через трещины – CRice