Heim >Datenbank >MySQL-Tutorial >Wie finde ich mithilfe von SQL das neueste Ziel für jeden Zug?
Verwenden Sie die Klausel MAX(DATE) und GROUP BY, um das neueste Ziel zu finden
Das Ziel dieser SQL-Abfrage besteht darin, das letzte Ziel jedes Zuges abzurufen, abhängig von der maximalen Abfahrtszeit. Wenn ich jedoch die Spalte „Dest“ aus der GROUP BY-Klausel ausschließe, erhalte ich den Fehler „ora-00979 not a GROUP BY expression“, der kontraintuitiv erscheint.
Um dieses Problem zu lösen, können wir die Fensterfunktion RANK() nutzen, um jedem Ziel innerhalb jeder Zuggruppe eine Rangfolge zuzuweisen. Insbesondere entspricht das Ziel mit dem höchsten Rang der spätesten Abfahrtszeit.
Die folgende SQL-Abfrage veranschaulicht diesen Ansatz:
<code class="language-sql">SELECT train, dest, time FROM ( SELECT train, dest, time, RANK() OVER (PARTITION BY train ORDER BY time DESC) dest_rank FROM traintable ) where dest_rank = 1</code>
Abfrage funktioniert wie folgt:
Das obige ist der detaillierte Inhalt vonWie finde ich mithilfe von SQL das neueste Ziel für jeden Zug?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!