2009-10-15 11 views
5

Warum nicht der Durchschnitt der Punktzahl eines Mitarbeiters jeden Monat, wenn summiert, gleich dem Durchschnitt der Mitarbeiter Punktzahl (überhaupt)?MS Access Rundung Präzision mit Gruppe von

Durchschnittliche

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

Returns 80,737


Durchschnitt von Monat

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 

Returns

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

Ich weiß 80,737 korrekt ist, weil ich die Aufzeichnungen von Hand und getan, um den Durchschnitt ausgezählt werden. Aber der Durchschnitt dieser Tabelle (bei 3 Dezimalstellen) ist 80,56, was zu weit entfernt ist. Gruppiert sich die Runde bei jedem Schritt?

+0

welche Abfrage gibt 80,56 zurück? –

+0

Die fünf monatlichen Abfragen gemittelt zusammen = 80,56 –

+0

Welcher Datentyp? Welcher Rundungsalgorithmus? – onedaywhen

Antwort

7

Ein Durchschnitt von Durchschnittswerten liefert nicht das gleiche Ergebnis wie ein einzelner Durchschnitt über alle Werte, es sei denn, alle gemittelten Gruppen haben die gleiche Anzahl an Elementen.

Wenn es jeden Monat eine andere Anzahl von Mitarbeitern rowScore gibt, wird es die Ergebnisse verzerren.

Betrachten Sie dieses Beispiel: Wenn wir den Durchschnitt der Zahlen 1 bis 10 berechnen, ist der Durchschnitt 5,5.

Berechnung des Durchschnitts der Zahlen von 1 bis 5 der Durchschnitt ist 3, und von 6 bis 10 ist 8. Beide Gruppen haben 5 Elemente, also der Durchschnitt von 3 und 8 = 5,5.

Wenn Sie jedoch den ersten Durchschnittswert als 1 und 2 = 1,5 und den zweiten Durchschnittswert als 3 bis 10 = 6,5 verwenden, ergibt der Durchschnitt 1,5 und 6,5 4. Dies ist verzerrt, da die erste Gruppe 2 Elemente und die zweite hat 8.

Zusätzlich zu diesem werden die kumulativen Auswirkungen der Rundung, die Robert Harvey festgestellt.

+0

Ah ja danke, nachdem du die rohen Aufzeichnungen auf Excel und Mittelung geworfen hast die Monate einzeln machen es Sinn. – CRice

+0

Kein Problem, es ist eines dieser Dinge, die einfach nicht intuitiv sind –

1

Ich würde nicht erwarten, dass die beiden Ergebnisse gleich sind, aus dem einfachen Grund, dass, wenn Rundung stattfindet, Sie fünf Runden in den monatlichen Scores und nur einmal für das jährliche runden.

Das sagte, ich würde auch die Rekordzahlen überprüfen, und sehen, ob sie Halse. Es ist möglich, angesichts der Formatierung am Datum und so, dass ein oder zwei Datensätze durch die Risse in den monatlichen Abfragen gleiten.

+0

Ja, es hängt davon ab, was die Datenbank hinter den Kulissen tut und ob sie auf eine bestimmte Genauigkeit auf jeder Gruppe abrundet von ... wird prüfen, ob die Datensätze nicht durch die Risse rutschen – CRice