Gruppenweises Maximum: Abrufen der neuesten Position für jedes Wertpapier
Im bereitgestellten Datensatz möchten Sie die neueste Position für jedes Wertpapier abrufen. Sie haben versucht, eine Abfrage basierend auf der Aggregatfunktion MAX() zu verwenden, diese gibt jedoch nur eine einzelne Zeile zurück.
Um dieses Problem zu beheben, können Sie einen alternativen Ansatz verwenden, der LEFT JOIN verwendet. Nachfolgend finden Sie eine optimierte Abfrage, die effizient das erforderliche Ergebnis erzielt:
SELECT p1.id, p1.security, p1.buy_date FROM positions p1 left join positions p2 on p1.security = p2.security and p1.buy_date < p2.buy_date where p2.id is null;
Diese Abfrage führt einen äußeren Join der Tabelle mit sich selbst durch und schließt Zeilen aus, in denen ein späteres Kaufdatum für dasselbe Wertpapier vorliegt. Folglich wird für jedes Wertpapier eine einzelne Zeile mit dem letzten Kaufdatum zurückgegeben.
Durch die Verwendung dieses optimierten Ansatzes können Sie die Ausführungszeit der Abfrage erheblich reduzieren und die gewünschten Informationen effizient abrufen.
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von SQL effizient die aktuelle Position für jedes Wertpapier abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!