Heim >Datenbank >MySQL-Tutorial >Wie kann ich mithilfe von SQL effizient die aktuelle Position für jedes Wertpapier abrufen?

Wie kann ich mithilfe von SQL effizient die aktuelle Position für jedes Wertpapier abrufen?

Linda Hamilton
Linda HamiltonOriginal
2025-01-04 18:11:42484Durchsuche

How to Efficiently Retrieve the Latest Position for Each Security Using SQL?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn