Dieses Problem tritt in vielen praktischen Situationen auf, in denen fehlende Werte durch erwartete Werte ersetzt werden, die aus den verbleibenden verfügbaren Werten bestimmt werden. Ich versuche, Durchschnitt von Spalte A über n Spalte zu berechnen, sagen Sie C1, ..., Cn, die Nullwerte haben können. Wenn eine der Spalten null ist, möchte ich den berechneten Durchschnitt über den Werten in den anderen Spalten ersetzen und die Null-Spalte ausschließen. Wenn zum Beispiel nur drei Spalten (c1, C2 und C3) vorhanden sind, möchte ich, wo immer alle drei Spalten einen Wert haben, den Durchschnitt für die Untergruppen in diesen drei Spalten angeben. Wenn eine Spalte, z. B. die dritte Spalte, fehlt, wird der Durchschnittswert über die Werte der anderen beiden Spalten berechnet. Wenn auch eine zweite Spalte fehlt, wird der Durchschnittswert nur über die Werte einer Spalte berechnet.Progessive Group By Command
So eine Antwort ist einfach zu melden:
Select Avg(A) as AvgA
From Table
Group by C1, C2, and C3
für die Situation, in der C3 null ist und C1 und C2 die Werte v1 und v2, dann sollte die AVGA berechnet werden:
Select Avg(A) as AvgA
From Table
Where C1=v1 and C2=v2
Group by C1, C2
Kann mir jemand einen Code geben, der dies automatisch für alle n Spalten tut? Die allgemeine n-Spalten-Lösung müsste in der Lage sein, n-1-Gruppen von-Spalten zu verwenden und eine Spalte zu löschen, die null ist. Die n-1-Gruppe-B muss bei v1 bis vn-1-Werten ausgewertet werden.
Einige Beispieldaten und Ihre erwarteten Ergebnisse woot helfen Ihnen einen langen Weg gehen. –