Abrufen des Maximalwerts für jede eindeutige Benutzer-ID in Oracle
Diese Anleitung zeigt, wie Sie den Maximalwert, der jeder einzelnen Benutzer-ID zugeordnet ist, effizient aus einer Oracle-Tabelle extrahieren. Gehen Sie von einer Tabelle aus, die wie folgt strukturiert ist:
<code>UserId, Value, Date</code>
Das Ziel besteht darin, das UserId
und das entsprechende Value
abzurufen, wobei das Date
für jeden Benutzer das aktuellste ist.
Hier ist eine effektive Oracle SQL-Abfrage, um dies zu erreichen:
<code class="language-sql">SELECT t1.* FROM mytable t1 LEFT OUTER JOIN mytable t2 ON (t1.UserId = t2.UserId AND t1."Date" < t2."Date") WHERE t2.UserId IS NULL;</code>
Diese Abfrage verwendet ein LEFT OUTER JOIN
, um jede Zeile in mytable
(mit dem Alias t1
) mit allen anderen Zeilen (mit dem Alias t2
) zu vergleichen, die das gleiche UserId
haben. Die Join-Bedingung t1."Date" < t2."Date"
stellt sicher, dass nur Zeilen mit einem späteren Datum berücksichtigt werden.
Die WHERE t2.UserId IS NULL
-Klausel filtert die Ergebnisse. Zeilen, in denen t2.UserId
NULL
ist, geben an, dass keine andere Zeile mit demselben UserId
und einem späteren Date
vorhanden ist. Daher stellen diese Zeilen das maximale Datum für jeden Benutzer dar.
Beispiel:
Wenn mytable
die folgenden Daten enthält:
UserId | Value | Date |
---|---|---|
1 | 5 | 2023-03-08 |
1 | 10 | 2023-03-15 |
2 | 3 | 2023-04-01 |
2 | 7 | 2023-04-10 |
Die Abfrage gibt Folgendes zurück:
UserId | Value | Date |
---|---|---|
1 | 10 | 2023-03-15 |
2 | 7 | 2023-04-10 |
Dieser Ansatz ist effizient und vermeidet die Notwendigkeit von Unterabfragen oder Fensterfunktionen, was ihn zu einer robusten Lösung für Oracle-Datenbanken macht.
Das obige ist der detaillierte Inhalt vonWie finde ich den Maximalwert für jede eindeutige Benutzer-ID in einer Oracle-Tabelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!