Gibt es eine einfache Möglichkeit, Nullen davon abzuhalten, das avg zu beeinflussen? Sie scheinen mit 0 zu zählen, was ich nicht will. Ich möchte einfach nicht ihren Durchschnitt berücksichtigen, aber hier ist der Haken, ich kann sie nicht von der Ergebnismenge fallen lassen, da dieser Datensatz Daten darüber enthält, die ich brauche.
Aktualisierung:
Beispiel:
%Vor%Das würde für mich funktionieren, aber die Durchschnittswerte sind nicht genau, da sie Nullwerte als 0 zählen, was wirklich den ganzen Durchschnitt wegwirft.
Aggregatfunktionen (SUM, AVG, COUNT usw.) in SQL schließen NULL immer automatisch aus.
Also SUM (col) / COUNT (col) = AVG (col) - das ist großartig und konsistent.
Der Spezialfall von COUNT (*) zählt jede Zeile.
Wenn Sie einen Ausdruck mit NULLs erstellen: A + B, wobei entweder A oder B NULL ist, dann ist A + B NULL, unabhängig davon, ob die andere Spalte NULL ist.
Wenn es NULL gibt, im Allgemeinen AVG (A + B) & lt; & gt; AVG (A) + AVG (B), und sie werden wahrscheinlich auch unterschiedliche Nenner haben. Sie müssten die Spalten umbrechen: AVG (COALESCE (A, 0) + COALESCE (B, 0)), um das zu lösen, aber vielleicht auch den Fall, wo COALESCE (A, 0) + COALESCE (B, 0).
Basierend auf Ihrem Code würde ich vorschlagen:
%Vor%Ist der beste Weg, an den ich denken kann. Dies sollte automatisch die Nullen nicht enthalten. Hier ist ein wenig Lesen.
Es besteht eine gute Chance, dass Sie die richtige Antwort von dem erhalten, was andere hier gesagt haben, aber falls Sie es nicht getan haben:
Welche Werte in Ihrer Tabelle könnten NULL sein? Und was willst du tun, wenn einer von ihnen ist?
Sie geben niemals an, welche Ergebnisse angezeigt werden sollen, wenn Spalte1 NULL ist oder Spalte2 NULL ist oder wenn beide NULL usw. sind.
Ich habe diesen Trick kürzlich benutzt:
%Vor%Ich glaube, die Warnung ist genau das. Aber das gibt mir Seelenfrieden, weil ich genau weiß, wie es funktioniert.
Glückliche Kodierung