Entwickler-Ecke

Datenbanken - SQL Group By den PK der aggregation ausgeben


Kostas - Fr 08.07.11 16:29
Titel: SQL Group By den PK der aggregation ausgeben
Hallo Zusammen,

ich habe die Beispieltabelle:
Aus der Tabelle sollen pro TEILNEHMERID das größte ERGEBNIS
ausgegeben werden. Die schwirigkeit dabei ist, beim größten Ergebnis
soll auch das Primary Key Feld ID ausgegeben werden.


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
ID  TEILNEHMERID, max(ERGEBNIS)
1       1          2
2       1          5
3       2          6
4       2          8
5       3          10
6       3          18
7       3          19 

SELECT TEILNEHMERID, max(ERGEBNIS)
...
GROUP BY TEILNEHMERID


Antwort des Selects:

Quelltext
1:
2:
3:
4:
TEILNEHMERID, max(ERGEBNIS)
     1          5
     2          8
     3          19


Ich benötige jedoch das:

Quelltext
1:
2:
3:
4:
ID  TEILNEHMERID, max(ERGEBNIS)
2       1          5
4       2          8
7       3          19


Hat jemand eine Idee?

Gruß Kostas


Yogu - Fr 08.07.11 19:36

Hallo,

was passiert denn, wenn du das ID-Feld einfach noch mit in die SELECT-Klausel mit aufnimmst? Bringt er dann eine Zufällige ID der TEILNEHMERID?

Sonst könntest du verschachtelte Queries verwenden, was aber natürlich nicht so performant ist:


SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
SELECT ID, TEILEHMERID, ERGEBNIS
FROM tabelle AS t1
WHERE ERGEBNIS = (
  SELECT MAX(ERGEBNIS)
  FROM tabelle AS t2
  WHERE t1.TEILEHMERID = t2.TEILNEHMERID
)


Grüße,
Yogu

PS: Bitte verwende die <span class="inlineSyntax">{PROTECTTAGbd8e04c1aa8be83629b488502367c501}</span>- statt den <span class="inlineSyntax"></span>-Tags.


Kostas - Sa 09.07.11 08:11

Zitat:
Hallo,

was passiert denn, wenn du das ID-Feld einfach noch mit in die SELECT-Klausel mit aufnimmst? Bringt er dann eine Zufällige ID der TEILNEHMERID?

Wenn das ID Feld im Select vorkommt, muss es auch group by vorhanden sein.
Als Ergebnis würde ich dann alle Datensätze bekommen da die ID eindeutig is.


Zitat:

Sonst könntest du verschachtelte Queries verwenden, was aber natürlich nicht so performant ist:


Ja natürlich, daran habe ich nicht gedacht. So wird es funktionieren.
Besten Dank und noch einen schönen Tag.

Zitat:

PS: Bitte verwende die <span class="inlineSyntax">{PROTECTTAGce95ac736f699889e3f1e163b993e5f9}</span>- statt den <span class="inlineSyntax"></span>-Tags.


Gibt es eine Liste der Tags?


Yogu - Sa 09.07.11 19:42

user profile iconKostas hat folgendes geschrieben Zum zitierten Posting springen:
Gibt es eine Liste der Tags?

Unter Bereiche, wo standardmäßig Delphi steht, kannst du verschiedene Code-Tags auwählen.