2016-05-31 13 views
2

Ich habe eine Tabelle mit Werten wie:SQL Min und Max für mehrere Zeilen

Name Test Score 
Bob Test1 97.0 
Bob Test2 96.5 
Bob Test3 94.5 
Joe Test1 96.5 
Joe Test2 98.5 
Joe Test3 92.0 

Ich möchte die MIN und MAX Punktzahl für jede Name auf eine Zeile wie:

Name Min_Score Max_Score 
Bob 94.5  97.0 
Joe 92.0  98.5 

I kann die MIN oder MAX von sich selbst erhalten, aber nicht sicher, wie Sie beide gleichzeitig erhalten.

+0

Welche Datenbanksystem sind verwendest du? –

+1

'Name wählen, min (Score) als Min_score, Max (Score) als max_score aus Tabelle Gruppe nach Name' – Hellion

+0

MSSQL ... Ich habe das versucht, aber beide Werte gleich geblieben. – macbb

Antwort

3

Sie können Ihre Auswahl nach Namen gruppieren. Dadurch erhalten Sie jeden eindeutigen Namen. Sie können auch die Aggregatfunktionen min und max verwenden, die Ihre Tabelle nach jedem eindeutigen Namen durchsuchen. Dies ist eine gemeinsame Anfrage:

SELECT 
    name 
    , min(score) as Min_score 
    , max(score) as max_score 
FROM table 
GROUP by name 

Here is an example der Abfrage und die richtigen Ergebnisse

+0

Danke, meine Ergebnisse haben mich abgeworfen. Ich hatte viele Partituren, die die gleichen Min- und Max-Werte hatten, also dachte ich, es würde nicht richtig funktionieren. – macbb