oscha Geschrieben 30. August 2004 Geschrieben 30. August 2004 Hallo Leute! Habe eine DB mit folgendem Inhalt: Spalte | Inhalt id | 1 vote1 | 12 vote2 | 13 vote3 | 6 vote4 | 30 vote5 | 57 (5 Spalten mit den jeweiligen Anzahlen der Stimmen) Nun möchte ich mit SQL den Durchschnitt ermitteln mit AVG, jeoch habe ich da kleine Probleme mit: SELECT id, AVG(vote1,vote2,vote3,vote,vote5) AS schnitt FROM xyz ORDER BY schnitt DESC Hat einer einen guten Tipp oder erkennt den Fehler? Gruß oscha Zitieren
kLeiner_HobBes Geschrieben 30. August 2004 Geschrieben 30. August 2004 Nun, AVG() rechnet den Durchschnitt in einer Spalte aus. AVG(vote1) würde nun über alle Zeilen gehen und den Durchschnitt von "vote1" ausrechnen. Du brauchst einfach (vote1 + vote2 + vote3 + vote4 + vote5) / 5 AS schnitt. Und diese Frage würd ich eher ins Datenbank-Forum posten. Zitieren
kills Geschrieben 30. August 2004 Geschrieben 30. August 2004 DB ist MySQL? Inwiefern willst du den Durchschnitt ausrechnen? Willst du wissen wieviel % welche antwort gegeben haben? oder willst du die durchschnittliche antwort ausrechen (ratio)? z.b. (( vote1 *5 ) + ( vote2 * 4 ) + ( vote3 * 3 ) + ( vote4 * 2 ) + ( vote5 * 1) ) / 5 AS schnitt hierbei wird davon ausgegangen, dass 1 die beste und 5 die schlechteste note ist Zitieren
oscha Geschrieben 30. August 2004 Autor Geschrieben 30. August 2004 ja, ist MySQL kLeiner_HobBes, er bringt mir leider keine ausgabe bei deinem vorschlag wenn es möglich ist, kann es ja mal jemand ins DB-Forum schieben. vor lauter PHP-Code hab ich's als PHP-Frage aufgefasst - jetzt seh ich, dass ich mich geirrt habe Zitieren
kLeiner_HobBes Geschrieben 30. August 2004 Geschrieben 30. August 2004 Ich meine, du kannst es natürlich auch mit PHP lösen: mysql_query("SELECT id,vote1,vote2,vote3,vote4,vote5 from xyz"); //ist halt kein order by schnitt drin while ($result = mysql_fetchrow()) { $schnitt = $result[1] + $result[2] + $result[3] + $result[4] + $result[5]; $schnitt/= 5; //Ausgabe }[/PHP] Zitieren
SNOWMAN Geschrieben 30. August 2004 Geschrieben 30. August 2004 Hallo Leute! Habe eine DB mit folgendem Inhalt: Spalte | Inhalt id | 1 vote1 | 12 vote2 | 13 vote3 | 6 vote4 | 30 vote5 | 57 (5 Spalten mit den jeweiligen Anzahlen der Stimmen) Nun möchte ich mit SQL den Durchschnitt ermitteln mit AVG, jeoch habe ich da kleine Probleme mit: SELECT id, AVG(vote1,vote2,vote3,vote,vote5) AS schnitt FROM xyz ORDER BY schnitt DESC Hat einer einen guten Tipp oder erkennt den Fehler? Gruß oscha "order by schnitt" ??? ist schnitt nicht eine einzige Zahl? Irgendwie versteh ich den Sinn auch nich so ganz, was ist dein Ziel? Was genau sagt dir die Zahl dann? Zitieren
Wolle Geschrieben 30. August 2004 Geschrieben 30. August 2004 wenn es möglich ist, kann es ja mal jemand ins DB-Forum schieben. Kein Problem Zitieren
Goos Geschrieben 30. August 2004 Geschrieben 30. August 2004 Hallo Leute! Habe eine DB mit folgendem Inhalt: Spalte | Inhalt id | 1 vote1 | 12 vote2 | 13 vote3 | 6 vote4 | 30 vote5 | 57 (5 Spalten mit den jeweiligen Anzahlen der Stimmen) Wieso ueberhaupt 5 Spalten? So auf den ersten Blick waer es doch sinniger sich auf zwei Spalten zu beschraenken, so wie das oben auch dargestellt ist. Goos PS: Ich wuesste auch nicht wofuer so ein seltsamer Durchschnittswert gut sein sollte. Vielleicht waer es erstmal besser zu erklaeren, wie das Ergebnis genau ausschaun soll und welchen Zweck es erfuellen soll. Zitieren
SNOWMAN Geschrieben 31. August 2004 Geschrieben 31. August 2004 kann es sein das er den prozentanteil jedes Votes haben möchte? also vote1 hat 20% vote2 34% usw. ? dann hilft daganz normales prozent rechnen: select (vote1+vote2+vote3) as summe, ((vote1 / summe) * 100) as prozent from xyz order by prozent; wenn du dann per php nur die zweite ergebnissspalte ausgibst hast du die prozente der einzelnen votes da stehen Zitieren
oscha Geschrieben 1. September 2004 Autor Geschrieben 1. September 2004 Also folgendes zur Tabelle und Systematik: In der Tabelle stehen in den Spalten vote1 - vote5 jeweils die Anzahl der Stimmen, die für die entsprechende Note abgegeben wurden: "vote1" => 7 Leute haben "1" gewählt "vote2" 0> 4 Leute haben "2" gewählt . . "vote5" => 34 Leute haben die "5" gewählt nun möchte ich den durchschnitt von ALLEN ermitteln (prinzip: durchschnittsnote bei klassenarbeiten), habe damit jedoch meine probleme und dies nur über PHP gelöst. eleganterweise müsste dies aber auch in einer MySQL-Abfrage gehen - da fangen die Probleme an... Gruß Adam Zitieren
AxlHammer Geschrieben 2. September 2004 Geschrieben 2. September 2004 Wie wärs dann mit SELECT id, (vote1+vote2*2+vote3*3+vote4*4+vote5*5)/(vote1+vote2+vote3+vote4+vote5) as schnitt FROM tabelle Ist zwar nicht ganz so toll, aber sollte funktionieren... Gruss, Axl Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.