„Gruppe von“ ist das, was Sie hier benötigen. Just do „Gruppe von ParentActivityID“ und sagt, dass die jüngsten Zeitstempeln entlang alle Zeilen mit dem gleichen ParentActivityID ist für Sie benötigen:
SELECT ParentActivityID, MAX(Timestamp) FROM Table GROUP BY ParentActivityID
„Gruppe von“ Operator ist wie Zeilen aus einer Tabelle zu nehmen und sie in einer Karte setzen mit ein Schlüssel, der in der Klausel group by definiert ist (ParentActivityID in diesem Beispiel). Sie müssen definieren, wie die Gruppierung nach Zeilen mit doppelten Schlüsseln behandelt. Dafür haben Sie verschiedene Aggregatfunktionen, die Sie für die Spalten angeben, die Sie auswählen möchten, die aber nicht Teil des Schlüssels sind (nicht in der Gruppenklausel aufgeführt, denken Sie an sie als Werte in einer Map).
Einige Datenbanken (wie mysql) erlauben Ihnen auch, Spalten auszuwählen, die nicht Teil der group by-Klausel sind (nicht in einem Schlüssel), ohne eine Aggregatfunktion auf sie anzuwenden. In diesem Fall erhalten Sie einen zufälligen Wert für diese Spalte (das ist, als würde man den Wert in einer Karte mit jedem neuen Wert blind überschreiben). Dennoch, SQL-Standard zusammen mit den meisten Datenbanken da draußen wird Ihnen nicht erlauben, es zu tun. In diesem Fall können Sie min()
, max()
, first()
oder last()
Aggregatfunktion verwenden, um es zu umgehen.
Danke für die Antwort. Eigentlich möchte ich nur eine einzige ParentActivityID. Ihre Lösung gibt jedes Paar von ParentActivityID und Timestamp. Für e.g, wenn ich [1, T1], [2, T2], [1, T3] habe, dann wollte ich den Wert als [1, T3] und [2, T2]. – Varun