PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Durchschnitt mehrerer Werte einer Spalte


Guinness
09.01.2004, 13:33
Hallo,

wie kann ich einen Durchschnitt einer Spalte mit mehreren Werten errechnen?
Also ich habe mehrere Datensätze, die eine Spalte haben in der verschiedene Werte stehen, z. B.: 5,5,4,3,2,1
Ich möchte nun diese Werte zusammenzählen und durch die Anzahl teilen (Durchschnitt) . Die für jeden Datensatz, so dass ich den mit dem höchsten Durchschnittswert ermitteln und ausgeben kann!
Ich komme da nicht klar! Ich hab es mit Explode versucht, aber bin gläglich gescheitert! :-(

Bitte um Hilfe!

Gruß
Guinness


windmaster
09.01.2004, 13:56
SELECT Avg(tabelle.feld) as (Durchschnitt) FROM tabelle

So bekommst du den Durchschnitt einer Spalte heraus.

Guinness
12.01.2004, 08:34
auch wenn ich in der einen Spalter mehrere mit , getrennte Werte habe??? muß (Durchschnitt) eine spalte in der Tabelle sein??

windmaster
12.01.2004, 08:55
Wenn du deine Werte mit einem Komma trennst geht es nicht. Für dieses Problem fällt mir so spontan keine Lösung ein. Was für ein Datenbanksystem benutzt du denn?

Guinness
12.01.2004, 11:02
Ich benutze MYSQL und ich habe verschiedenen Datensätze mit verschiedenen Spalten! In einer Spalte eines Datensatzes werden Werte eingetragen, mit "," getrennt (so ne Art Voting!) Nun möchte ich ermitteln, wer im Durchschnitt am höschten liegt!
Die Werte in der Spalte schauen so aus:

5,4,3,6,4,5,5,4,5,6,7,5

Anzahl= Werte hochzählen, also 5=1, 4=2, 3=3, 6=4, ......
Anzahl = 12!
Nun möchte ich quasi:
(5+4+3+6+4+5+5+4+5+6+7+5)/Anzahl= Durchschnitt!
Durchschnit von den verschiedenen Datensätzen vergleichen und den höchsten anzeigen lassen!
Das möchte ich tun! :-)

Caminus
12.01.2004, 12:36
So setzt du die Fähigkeiten einer Datenbank praktisch "Schach matt". Such bei google nach Informationen zum Relationellen Datenbankmodel. Im Moment müsstest du den Umweg über eine Programmiersprache gehen, um den Durchschnitt zu berechnen.

Guinness
12.01.2004, 13:56
Warum setze ich damit die Fähigkeiten der Datenbank "Schach matt"??? Wenn ich ne Art Voting machen will, dann muß ich doch die Punkte im jeweiligen Datensatz speichern! Also muß ich ein Feld haben, dass die Punkte nacheinander aufnimmt!
Oder versteh ich da was falsch??

Caminus
12.01.2004, 16:00
Oder versteh ich da was falsch??
Jein,
es ist schon richtig, dass du die einzelnen Votes für ein Element speichern willst, aber nicht in einem "Feld".
Wenn du dir eine zweite Tabelle erstellst, in der du einmal eine eindeutige Id zum Datensatz hast und zum anderen die Information zum Vote, kannst du eine Relation zwischen den beiden Tabellen herstellen, die dir sofort und ganz einfach deinen Durchschnitt ausgibt.

Im Anhang hast du ein Beispiel dazu.
Um dort den Durchschnitt zu bekommen, genügt folgendes Statement.

select avg(v.note) from person p, vote v where p.pin = v.person_pin

Guinness
13.01.2004, 10:17
also ich versteh das eigentlich ja schon! Ich muß dir auch vollkommen recht geben! Und ich muß gestehen, dass deine Lösung die viel bessere ist!
Allerdings ist es so, dass das Script, welches ich für dieses Voting benutze ein "fertiges-kostenloses" Script aus dem Netz ist, da ich mich noch nicht wirklich mit Datenbanken auseinander gesetzt habe! Zum Anpassen und einwenig Ändern reicht es, aber zu mehr nicht! Daher auch mein Problem! Wie kann ich den Aufruf so gestalten, dass ich mit dem Bestehenden einen Durchschnittswert ermitteln kann???

ABER VIELEN DANK FÜR DEINE HILFE UND MÜHE!!

Guinness
13.01.2004, 14:26
Ich habe es jetzt so gelöst, wie du gesagt hast! Ich hab das Script einfach aufgebohrt und eine zusätliche Tabelle gebastelt! :-)
Funktioniert super! DANKE!