Zum Inhalt springen

SELECT-Abfrage mit AVG (Durchschnitt)


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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.

Geschrieben

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

Geschrieben

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 ;)

Geschrieben

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]

Geschrieben
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?

Geschrieben
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.

Geschrieben

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

Geschrieben

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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...