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
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.
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
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
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]
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?
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
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.
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
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
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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden