Finden Sie den größten Datensatz nach Gruppe in SQL
Bei der Datenbankverwaltung ist es häufig erforderlich, den größten Datensatz in jeder Datengruppe abzurufen. Betrachten Sie das folgende Szenario.
Frage:
Sie haben eine Tabelle mit drei Feldern: „Name“, „Top“ und „Gesamt“ mit den folgenden Daten:
Name | Top | Total |
---|---|---|
cat | 1 | 10 |
dog | 2 | 7 |
cat | 3 | 20 |
horse | 4 | 4 |
cat | 5 | 10 |
dog | 6 | 9 |
Ihre Aufgabe besteht darin, für jeden eindeutigen „Name“-Wert den Datensatz mit dem größten „Gesamt“-Wert zu finden. Das gewünschte Ergebnis sollte sein:
Name | Top | Total |
---|---|---|
cat | 3 | 20 |
horse | 4 | 4 |
dog | 6 | 9 |
Lösung:
Um die maximale Anzahl an Datensätzen pro Gruppe abzurufen, können Sie die folgende Abfrage verwenden:
<code class="language-sql">select Name, Top, Total from sometable where Total = (select max(Total) from sometable i where i.Name = sometable.Name)</code>
Diese Abfrage vergleicht den „Total“-Wert jedes Datensatzes mit seinem maximalen „Total“-Wert in derselben „Name“-Gruppe. Wählen Sie dann die Datensätze aus, deren „Gesamt“-Wert übereinstimmt.
Alternativ können Sie eine Unterabfrage verwenden, um das gleiche Ergebnis zu erzielen:
<code class="language-sql">select Name, Top, Total from sometable inner join ( select max(Total) as Total, Name from sometable group by Name ) as max on max.Name = sometable.Name and max.Total = sometable.Total</code>
Diese Abfrage verwendet zunächst eine Unterabfrage, um den maximalen „Gesamtwert“ für jeden eindeutigen „Namen“ zu berechnen. Die Hauptabfrage verknüpft dann die Tabelle mit einer Unterabfrage, um nur die Datensätze mit dem übereinstimmenden Höchstwert „Gesamt“ auszuwählen.
Das obige ist der detaillierte Inhalt vonWie finde ich den maximalen Datensatz für jede Gruppe in SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!