Effiziente Identifizierung der ältesten Person in jeder Gruppe mithilfe von SQL
Datenbankabfragen erfordern häufig die Suche nach Maximalwerten innerhalb bestimmter Gruppen. Dieses Beispiel zeigt, wie man die älteste Person in jeder Gruppe anhand einer Tabelle mit den Spalten person
, group
und age
ermittelt.
Lösung:
Dieser Ansatz nutzt einen LEFT JOIN
, um das Alter jeder Person innerhalb ihrer Gruppe zu vergleichen. Zeilen ohne Übereinstimmung stellen die älteste Person in dieser Gruppe dar.
Umsetzung:
<code class="language-sql">SELECT o.* FROM Persons o LEFT JOIN Persons b ON o.Group = b.Group AND o.Age < b.Age WHERE b.Age IS NULL;</code>
Erklärung:
Persons o
: Die Persons
-Tabelle trägt den Alias o
(für „älteste“).LEFT JOIN Persons b
: Ein LEFT JOIN
wird mit der Persons
-Tabelle mit dem Alias b
(für „größeres Alter“) ausgeführt. Dadurch wird jede Zeile in o
mit Zeilen in derselben Gruppe (o.Group = b.Group
) verbunden, die ein höheres Alter haben (o.Age < b.Age
).WHERE b.Age IS NULL
: Diese entscheidende Klausel filtert die Ergebnisse. Wenn eine Person in o
keine Übereinstimmung in b
hat (was bedeutet, dass b.Age
NULL ist), bedeutet das, dass niemand in ihrer Gruppe älter ist. Daher wird nur die älteste Person aus jeder Gruppe ausgewählt.Wichtige Überlegungen:
INNER JOIN
würde fälschlicherweise die älteste Person aus Gruppen mit nur einem Mitglied ausschließen.Das obige ist der detaillierte Inhalt vonWie finde ich mit SQL die älteste Person in jeder Gruppe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!