Ähnliche Fragen wurden bereits gestellt, aber keine haben angesprochen, warum die AVG
-Funktion in MSSQL einen anderen Wert als SUM
and-divide liefert, wenn keine NULL
Werte in den Daten vorhanden sind.Unterschied in der Genauigkeit zwischen AVG-Funktion und Summenaufteilung
Ich möchte das Ergebnis für die Daten in diesem (vereinfachten) TestTable
berechnen.
CorrectCount IncorrectCount
5.0 0.0
3.0 2.0
5.0 0.0
4.0 0.0
3.0 0.0
5.0 0.0
2.0 1.0
5.0 0.0
5.0 0.0
2.0 2.0
Die Partitur als score = sum(CorrectCount)/sum(CorrectCount+IncorrectCount)
Die folgende Abfrage
SELECT
AVG(CorrectCount/(CorrectCount+IncorrectCount)) as ScoreAverage,
SUM(CorrectCount)/SUM(CorrectCount+IncorrectCount) as ScoreSumDivide
FROM TestTable
erzeugt diese Ausgabe berechnet wird:
ScoreAverage ScoreSumDivide
0.876666666666667 0.886363636363636
Wo dieser Unterschied kommt das? Was macht AVG
anders als die SUM
and-divide? Ich bin auf der Suche nach einer Erklärung, warum das Ergebnis der AVG anders ist als das explizite SUM(CorrectCount)/SUM(CorrectCount+IncorrectCount)
. Ich erwarte, dass es aufgrund der Genauigkeit oder Rundung innerhalb der AVG
Funktion ist.
Können Sie bitte weitere Informationen dazu hinzufügen, was genau Sie fragen? – TheGameiswar
In einem von ihnen ist die Operation "Summe der Werte"/Anzahl. In der anderen Summe der Werte/Summe der Werte. Probieren Sie SUM (CorrectCount/(CorrectCount + IncorrectCount))/Count (*) aus, die avg entsprechen. –