joschilein
Multitalent
- 5 Mai 2006
- 1.393
- 151
Ich habe eine Tabelle die ungefähr so aussieht
id|subid|name1|name2|val
1|1|a|a1|1
1|2|a|a2|0,9
1|3|b|b1|0,8
2|1|f|f1|1
3|1|b|NULL|1
3|2|a|a3|0,5
4|..|..|..|..
..|..|..|..|..
Nun möchte ich eine Abfrage machen, die pro name1 eine Summe errechnet, wobei aber jeweils nur der größte Wert pro id berücksichtigt werden soll. Der Ausschnitt aus obigem Beispiel soll also liefern:
name1|summe
b|1,8
a|1,5
f|1
Die bisherige Abfrage macht das natürlich nicht richtig.
name1|summe
a|2,4
b|1,8
f|1
Wie bekomme ich das also geschickt hin? Ich habe schon verschiedene Kombinationen mit WHERE und MAX versucht, aber das wird irgendwie nichts. Das muss doch aber irgendwie gehen ?!
Einzige Alternative die ich sehe wäre eine Aufspaltung auf zwei Tabellen, einmal mit name1 (ohne Doppel) und einmal mit name2, aber das gefällt mir irgendwie gar nicht.
1|1|a|a1|1
1|2|a|a2|0,9
1|3|b|b1|0,8
2|1|f|f1|1
3|1|b|NULL|1
3|2|a|a3|0,5
4|..|..|..|..
..|..|..|..|..
Nun möchte ich eine Abfrage machen, die pro name1 eine Summe errechnet, wobei aber jeweils nur der größte Wert pro id berücksichtigt werden soll. Der Ausschnitt aus obigem Beispiel soll also liefern:
b|1,8
a|1,5
f|1
Die bisherige Abfrage macht das natürlich nicht richtig.
Code:
SELECT name1
,ROUND(SUM(val),2) as summe
FROM table
GROUP BY name1
ORDER BY summe DESC, name ASC
a|2,4
b|1,8
f|1
Wie bekomme ich das also geschickt hin? Ich habe schon verschiedene Kombinationen mit WHERE und MAX versucht, aber das wird irgendwie nichts. Das muss doch aber irgendwie gehen ?!
Einzige Alternative die ich sehe wäre eine Aufspaltung auf zwei Tabellen, einmal mit name1 (ohne Doppel) und einmal mit name2, aber das gefällt mir irgendwie gar nicht.
Zuletzt bearbeitet: