oscha Geschrieben 30. August 2004 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 30. August 2004 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 30. August 2004 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
oscha Geschrieben 30. August 2004 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 30. August 2004 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SNOWMAN Geschrieben 30. August 2004 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolle Geschrieben 30. August 2004 Teilen Geschrieben 30. August 2004 wenn es möglich ist, kann es ja mal jemand ins DB-Forum schieben. Kein Problem Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goos Geschrieben 30. August 2004 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SNOWMAN Geschrieben 31. August 2004 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
oscha Geschrieben 1. September 2004 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
AxlHammer Geschrieben 2. September 2004 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.