Durchschnitt mehrerer Spalten
Bei der Berechnung des Durchschnitts mehrerer Spalten in einer Tabelle ist es wichtig, die Nullbarkeit korrekt zu handhaben. Betrachten Sie die folgende Situation:
Problem:
Sie haben eine Tabelle namens „Anfrage“ mit den folgenden Daten:
Req_ID R1 R2 R3 R4 R5 R12673 2 5 3 7 10 R34721 3 5 2 1 8 R27835 1 3 8 5 6
Sie möchten Zeigt den Durchschnitt der Spalten R1, R2, R3, R4 und R5 an. Wenn Sie jedoch die folgende Abfrage verwenden:
Select Req_ID, Avg(R1+R2+R3+R4+R5) as Average from Request Group by Req_ID
Sie erhalten die Summe der Werte anstelle des Durchschnitts.
Lösung:
Das Problem liegt in der Handhabung von NULL-Werten. Wenn Ihre Spalten NULL-Werte zulassen, ist die Summe der NULL-Werte ebenfalls NULL. Um den Durchschnitt korrekt zu berechnen, müssen Sie die NULL-Werte ignorieren.
Syntax nach 2008:
Wenn Sie SQL Server 2008 oder höher verwenden, können Sie verwenden die folgende Syntax:
SELECT *, (SELECT AVG(c) FROM (VALUES(R1), (R2), (R3), (R4), (R5)) T (c)) AS [Average] FROM Request
Diese Syntax verwendet die VALUES-Klausel, um eine Tabelle mit einer Zeile für jede Spalte zu erstellen. Das AVG-Aggregat wird dann auf diese Tabelle angewendet und ignoriert alle Zeilen, die NULL-Werte enthalten.
Syntax vor 2008:
Wenn Sie SQL Server 2005 oder verwenden Früher können Sie die folgende Syntax verwenden:
SELECT *, (SELECT AVG(c) FROM (SELECT R1 UNION ALL SELECT R2 UNION ALL SELECT R3 UNION ALL SELECT R4 UNION ALL SELECT R5) T (c)) AS [Average] FROM Request
Diese Syntax verwendet UNION ALL, um eine Tabelle mit einer Zeile zu erstellen für jede Spalte. Das AVG-Aggregat wird dann auf diese Tabelle angewendet und ignoriert alle Zeilen, die NULL-Werte enthalten.
Das obige ist der detaillierte Inhalt vonWie berechnet man den Durchschnitt mehrerer Spalten mit NULL-Werten in SQL Server korrekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!