Ganz großer Dank für die ausführliche Erklärung. Und ja, istn Amiprovider, der sich auf seiner alten Page noch den größten Provider der Welt gerühmt hat: ait.com .
Grüßle, *jiriki*
Hallo,
Ich hab hier eine MySQL-3.23.33-Version aufm Server
oh je.
und möchte nun in meiner Tabelle eine Select-Anfrage starten, die mir unter anderem einen über drei Spalteneinträge (Resultat1, Resultat2 und Resultat3) gemittelten Wert liefern soll, wobei jedoch auch eine oder zwei Resultat-Attribute NULL sein können, und dann nicht zur Mittelung herbeigezogen werden sollen.
Z.B.: Resultat1 = 10.2, Resultat2 = 4.8, Resultat3 = NULL bzw. 0.0
Wirklich bzw. 0.0. Dann vergiß meine Lösung, die ich Dir vorstelle. Die geht nur bei echten NULL-Werten.
Richtig: ( Resultat1 + Resultat2 ) : 2 = 7.5
Falsch: ( Resultat1 + Resultat2 + Resultat3 ) : 3 = 5.0Hat jemand eine Idee, wie die entsprechende Anfrage á la:
SELECT 1 + NULL
-> liefert NULL zurück.
Um die Summe richtig zu berechnen, nutze COALESCE():
(added in MySQL 3.23.3)
SELECT COALESCE(spalte1, 0) + COALESCE(spalte2, 0) + COALESCE(spalte3, 0)
liefert Dir die korrekte Summe.Nun musst Du noch die Anzahl der Summanden bestimmen, dazu kannst Du die ISNULL()-Funktion benutzen:
SELECT (1 - ISNULL(spalte1)) + (1 - ISNULL(spalte2)) + (1 - ISNULL(spalte2))
liefert Dir die Anzahl der von NULL verschiedenen Spalten zurück. Du kannst dies umschreiben in
SELECT <Anzahl der Spalten> - ISNULL(spalte1) - ISNULL(spalte2) - ...
Die Division der beiden Werte solltest Du selbst hinbekommen und nicht vergessen daran zu denken, welchen Wert Du zurückliefern willst, wenn _alle_ Spalten NULL enthalten.
Wenn Du den Wert 0 wie NULL behandeln willst, dann könntest Du dafür IF benutzen.
Freundliche Grüße
Vinzenz