Avg() nur felder mit Inhalt

ah, also doch
Dies würde zu noch mehr Problemen führen, wenn Zeichenketten vorhanden wären, die sich nicht nach Integer, Decimal oder ähnlichem konvertieren lassen. Du solltest die Datentypen entsprechend setzen, wie du die Spalte auch verwenden willst. Für Ganzzahl integer usw
 
Die Dokumentation zu mySQL ist da an sich ziemlich deutlich: "Unless otherwise stated, group functions ignore NULL values."

Alles andere wäre auch 'n ziemlich ungewöhnlicher Ansatz...
 
Moin allerseits,
.... Also es können nur Zahlen in den Feldern stehen oder garnichts. ...
Gruss
lszts

Ja ja, selbst wenn man lesen kann, muss der Autor noch lange nicht das selbe meinen, als wie das was der Leser sieht ;)
oder der Leser liest und denkt zu schnell das was er immer dachte. :confused:

Wenn man mich gefragt hätte, welchen Datentyp hat ein Feld in dem nur Zahlen stehen (können) oder gar nichts?
Hätte ich natürlich prompt gesagt Number oder ein Subtype :)

Euch allen ein schönes Wochenende
 
Ich weiß zwar nicht, was mir Dein Post sagen soll, aber dafür hab ich selber noch was zu sagen... :p

Verzeiht meine Ignoranz, aber da ich mySQL nicht kenne(n will), ist das hier eine Oracle Session:

Code:
ISHINO@ORCL > CREATE TABLE avg_test(a number);

Table created.

ISHINO@ORCL > INSERT INTO avg_test VALUES (1);

1 row created.

ISHINO@ORCL > INSERT INTO avg_test VALUES (2);

1 row created.

ISHINO@ORCL > INSERT INTO avg_test VALUES (NULL);

1 row created.

ISHINO@ORCL > COMMIT;

Commit complete.

ISHINO@ORCL > SELECT AVG(a) FROM avg_test;

    AVG(A)
----------
       1.5

Was ich damit sagen will? Probieren geht über Lesen in der Doku, Forumsteilnehmern zuhören und ist überhaupt unterhaltsam. Nur "einfach wissen" ist besser. ;-)

In diesem Sinne... :rolleyes:
 
Hallo nochmal,

muss das Thema leider nochmal ansprechen. Also es scheint so zu sein das auch wenn ich integer als Datentyp hab avg() trotzdem "falsch" rechnet. Dabei steht dann auch der wert "0" im feld drin. Kann man das irgendwie verhindern? Wenn ich dann nähmlich die "0" per Hand lösche rechnet avg() richtig(ignoriert dieses Feld).

PS: habs bei MS Access auch ausprobiert, das gleiche.....

Hilfe!!
 
0 != NULL

Der Durchschnitt von 0 und 1 ist eben nicht 1, sondern 0.5 ((0+1)/2). Wenn Du also 0-Werte nicht bei der Durchschnittsberechnung berücksichtigen willst, mußt Du eine entsprechende WHERE-Klausel angeben (WHERE feld != 0). Nur die NULL-Werte werden auch ohne Dein Zutun ignoriert. Erläuterungen, siehe oben.
 
Hi,

soweit so gut:

Wenn Du also 0-Werte nicht bei der Durchschnittsberechnung berücksichtigen willst, mußt Du eine entsprechende WHERE-Klausel angeben (WHERE feld != 0).

Aber was tu wenn man 20 Spalten mit überall "0" dazwischen hat?
Mit where Feld1 != 0 or where Feld2 != 0... usw. geht es nicht.
Ich seh schwarz.

Gruß
 
Zurück