Gruppenweises Maximum
Problem:
Ermitteln Sie die aktuelle Position für jedes Wertpapier wie folgt Tabelle:
id | security | buy_date |
---|---|---|
26 | PCS | 2012-02-08 |
27 | PCS | 2013-01-19 |
28 | RDN | 2012-04-17 |
29 | RDN | 2012-05-19 |
30 | RDN | 2012-08-18 |
31 | RDN | 2012-09-19 |
32 | HK | 2012-09-25 |
33 | HK | 2012-11-13 |
34 | HK | 2013-01-19 |
35 | SGI | 2013-01-17 |
36 | SGI | 2013-02-16 |
KERX | 2013-02-20 | |
KERX | 0000-00-00 |
Lösung:
Die folgende Abfrage ruft das maximale Kaufdatum für jedes Wertpapier zusammen mit der entsprechenden ID ab:
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 findet mithilfe eines Left-Joins effizient die neueste Position für jedes Wertpapier. Es vergleicht die Kaufdaten jedes Wertpapiers und wählt nur Zeilen aus, in denen kein späteres Kaufdatum vorhanden ist. Diese optimierte Lösung gewährleistet genaue Ergebnisse in einer schnelleren Ausführungszeit im Vergleich zu auf Unterabfragen basierenden Ansätzen.
Das obige ist der detaillierte Inhalt vonWie finde ich mithilfe von SQL die aktuellste Position für jedes Wertpapier?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!