Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

SELECT-Abfrage mit AVG (Durchschnitt)

Empfohlene Antworten

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

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.

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

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

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]

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?

wenn es möglich ist, kann es ja mal jemand ins DB-Forum schieben.

Kein Problem :)

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.

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

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

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.