Probleme mit SUM & DISTINCT

janosh75

Mitglied
Hallo zusammen,
ich habe ein Problem mit einer Tabelle:
Ich habe 3 Spalten (teilnehmer,tag,punkte) und 9 Zeilen(in denen 3 verschiedene Teilnehmer je 3mal erscheinen (Teilnehmer A - Tag 1 - 3 Punkte ; Teilnehmer A - Tag 2 - 5 Punkte usw. für 3 Teilnehmer an 3 Tagen)
Ich schaffe es leider nicht eine Gesamtwertung mit Teilnehmer und Gesamtpunkten pro Teilnehmer darzustellen. Ich habe folgendes probiert:
SELECT DISTINCT teilnehmer, SUM(punkte) FROM results ORDER BY punkte DESC

Was hab ich da falsch gemacht? Bin leider noch absolut neu auf dem Gebiet. Bitte helft mir.
 
Hallo,

um hier ein ergebnsi zu bekommen mußt Du in Deiner Tabelle agregieren das heißt die "Summe" über die Punkte Spalte bilden, die Anzahl "count()" der Tage eines User zählen, und dann eine sogenannte group bei clausel verwenden.
Code:
SELECT id spieler, Count (tag) anzahl_spiel_tage, Sum (punkte)  anzahl_punte
FROM t_spieler 
GROUP BY id
 
Vielen Dank für die Antwort.
Allerdings will ich das Ergebnis nach Punkten sortieren.
Ich habe bisher folgendes gemacht:

SELECT DISTINCT driver, team, SUM (points_drv) total FROM [results] GROUP BY driver, team

Das Ergebnis ist ansich genau die Tabelle die ich brauche. nur klappt die Sortieung nach gesamtpunkten nicht! Kannst du mir da nochmal helfen?
 
Hallo,
das sollte es sein:

Code:
SELECT DISTINCT id, Count (tag), Sum (punkte) 
FROM t_spieler 
GROUP BY id
ORDER BY Sum (punkte) DESC 
---------------------------------------------------------
-- der spieler mit den meisten punkten 
-- steht dann als erster datensatz der 
-- spieler mit den zweit - meisten u.s.w.
---------------------------------------------------------
 
auf das DISTINCT würde ich in solchen Fällen verzichten, da es keine Funktion hat (und die Lesbarkeit der Query beeinträchtigt): das GROUP BY sorgt ja bereits dafür, dass es im Ergebnis keine Duplikate geben kann.

Gruß

MP
 
Zurück