2009-10-15 17 views
5

¿Por qué el promedio de la puntuación de un empleado de cada mes, cuando se suma, es igual al promedio de la puntuación de los empleados (nunca)?MS Access Rounding Precision With Group By

Promedio

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])) 

devoluciones 80,737


Promedio Por Mes

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 

devoluciones

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

sé 80.737 es correcto porque he contabilizado los registros a mano y hecho de la media. Pero el promedio de esta tabla (con 3 decimales) es 80.56, que está demasiado lejos. ¿El grupo se mezcla con el redondeo en cada paso?

+0

cuya consulta está devolviendo 80.56? –

+0

Las cinco consultas mensuales promediaron juntas = 80.56 –

+0

¿Qué tipo de datos? ¿Qué algoritmo de redondeo? – onedaywhen

Respuesta

7

Un promedio de valores promedio no arrojará el mismo resultado que un promedio único sobre todos los valores, a menos que todos los grupos promediados tengan el mismo número de elementos.

Si hay diferentes números de empleados en RawScore cada mes, estará desviando los resultados.

Considere este ejemplo: si calculamos el promedio de los números del 1 al 10, el promedio es 5.5.

Calculando el promedio de los números del 1 al 5, el promedio es 3 y de 6 a 10 es 8. Ambos grupos tienen 5 elementos, por lo que el promedio de 3 y 8 = 5.5.

Sin embargo, si toma el primer promedio como 1 y 2 = 1.5, y el segundo promedio como 3 a 10 = 6.5, entonces promedia 1.5 y 6.5 da 4. Esto está sesgado porque el primer grupo tiene 2 elementos, y el segundo tiene 8.

Además de esto serán los efectos acumulativos del redondeo que Robert Harvey notó.

+0

Ah sí, gracias, después de arrojar los registros brutos a Excel y promediar los meses individualmente tiene sentido. – CRice

+0

No hay problema, es una de esas cosas que simplemente no es intuitiva –

1

No esperaría que los dos resultados sean los mismos, por la simple razón de que, si se produce el redondeo, se redondea cinco veces en las puntuaciones mensuales, y solo una vez para el año.

Dicho esto, verificaría también el recuento de registros y vería si están en desacuerdo. Es posible dado el formato en la fecha y tal, que un registro o dos se está deslizando a través de las grietas en las consultas mensuales.

+0

Sí, depende de lo que haga la base de datos entre bastidores y si se redondea con cierta precisión en cada grupo por ... verificará que los registros no se salgan de las grietas – CRice